我是RDF / ontologies的新手,在这个领域工作的方式对我来说有点不清楚。目前我对三重验证感到困扰。我仍然以关系的方式思考我首先创建一个模式,然后为了插入数据,我需要遵循该结构。
为了插入三元组,我使用Jena然后使用生成的String来执行Insert命令。所以这是我的问题:
有没有办法验证我生成的RDF三元组(目前使用Jena)实际上是遵循我的本体结构。
或者,当我执行插入时,有没有办法通过rdf商店(currenlty Virtuoso)通知?我做了一些搜索,发现:How to Import Ontology into Virtuoso?。这是否意味着我的三元组将根据我的本体进行检查/验证?
还找到了RDF and OWL workflow question。它说那个
答案 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, value
或subject, predicate, object
大致匹配primary key, column, value
。在SQL世界中,如果表中的每个单元都被填充,那么它是最好的 - 并且空单元可能被解释为具有含义。在RDF世界中,稀疏数据(具有许多空单元格)往往是规则,而那些空单元格不具有超出的含义;我们不具有该值。&#34 ;
用于检查给定数据集是否符合"形状的新工具" (这可能是一个本体论)来自SHACL中的W3C和相关项目。这些工具不限制可能输入的数据,而是检查您正在使用的数据是否符合您的预期形状。
Virtuoso尚未对SHACL及相关内置支持,但这些都在待办事项列表中。也就是说,SHACL验证工具可以用于支持Virtuoso的数据。
(ObDisclaimer:OpenLink Software生成Virtuoso,雇用我。)