针对本体验证RDF三元组以检查正确的结构

时间:2014-03-22 15:23:53

标签: rdf jena owl sesame virtuoso

我是RDF / ontologies的新手,在这个领域工作的方式对我来说有点不清楚。目前我对三重验证感到困扰。我仍然以关系的方式思考我首先创建一个模式,然后为了插入数据,我需要遵循该结构。

为了插入三元组,我使用Jena然后使用生成的String来执行Insert命令。所以这是我的问题:

  • 有没有办法验证我生成的RDF三元组(目前使用Jena)实际上是遵循我的本体结构。

  • 或者,当我执行插入时,有没有办法通过rdf商店(currenlty Virtuoso)通知?我做了一些搜索,发现:How to Import Ontology into Virtuoso?。这是否意味着我的三元组将根据我的本体进行检查/验证?

  • 还找到了RDF and OWL workflow question。它说那个

    1. 创建我的本体后我应该
    2. 将本体导出为RDF以便
    3. 将其导入RDF商店。是否将我的本体导入Virtuoso(如:How to Import Ontology into Virtuoso?中所述)意味着步骤1和2已完成,我现在正在执行第3步?

2 个答案:

答案 0 :(得分:4)

A)这种验证不是RDF模型的一部分,因此大多数三元组/ API都不支持它。我建议你放弃这种心态,但回答你的问题:是的,有一些工具可以让你做这种事情。一个例子是Pellet OWL推理器,它有一个约束验证模式,但我确信还有其他的。或者您当然可以通过实现某种检查传入三元组的解析器监听器,或者通过对三元组进行事后检查,使用查询或使用RDF-OO映射解决方案来实现自己的验证例如AliBaba或Empire。

B)我不太熟悉Virtuoso 100%确定,但我怀疑它不会验证针对架构的插入。如上所述,这在RDF世界中是不寻常的事情。

C)(更新):是的,如果您要将本体导入Virtuoso,那么您确实将它加载到三元库中,因此需要处理所有3个步骤。

答案 1 :(得分:2)

RDF图表遵循"开放世界"模型,与封闭世界"完全不同。 SQL表的模型。在SQL中,您只能填充由架构预定义的表格单元格。在RDF,"任何人都可以随时说出任何事情。"这给了很大的自由和强大的力量,但确实需要一些学习才能被利用。

您可能会认为每个三元组对应于SQL表中的单个单元格 - entity, attribute, valuesubject, predicate, object大致匹配primary key, column, value。在SQL世界中,如果表中的每个单元都被填充,那么它是最好的 - 并且空单元可能被解释为具有含义。在RDF世界中,稀疏数据(具有许多空单元格)往往是规则,而那些空单元格不具有超出的含义;我们不具有该值。&#34 ;

用于检查给定数据集是否符合"形状的新工具" (这可能是一个本体论)来自SHACL中的W3C和相关项目。这些工具不限制可能输入的数据,而是检查您正在使用的数据是否符合您的预期形状。

Virtuoso尚未对SHACL及相关内置支持,但这些都在待办事项列表中。也就是说,SHACL验证工具可以用于支持Virtuoso的数据。

(ObDisclaimer:OpenLink Software生成Virtuoso,雇用我。)