问题描述
假设我有两个 RDF(海龟)文件,一个包含我的自定义本体 (a.ttl
),另一个包含根据本体的值 (b.ttl
)。
是否可以使用 .NET RDF 检查 b.ttl
是否遵守 a.ttl
中定义的所有定义?
我可以使用 a.ttl
类加载 OntologyGraph
,我能否以某种方式使用它来验证从 b.ttl
加载的图形是否符合规范?
解决方法
这取决于你的定义是如何表达的。
如果它们以 SHACL 表示,那么是的 - dotNetRDF 支持 SHACL 验证(遗憾的是尚未在文档中写入,但请查看 this sample code)。
如果它们用 OWL 表示,那么不 - dotNetRDF 没有 OWL 推理引擎,因此它无法确定您的数据是否与本体一致(通常 OWL 实际上是用于断言新事实,而 OWL“验证”是确定所断言的事实是否与本体保持一致的过程)。您可能需要通过 one of the reasoners listed here 进行此类处理。
基于简单 RDF-Schema 的一组约束(例如子类、属性域、属性范围)可能可以相当容易地转换为 SHACL,但这将是添加到您的过程中的额外步骤。