根据本体验证RDF三元组,以检查正确的结构

根据本体验证RDF三元组,以检查正确的结构,rdf,jena,owl,sesame,virtuoso,Rdf,Jena,Owl,Sesame,Virtuoso,我是RDF/本体论的新手,在这个领域的工作方式对我来说有点不清楚。目前我对三重验证感到困扰。我仍然以关系的方式思考,首先创建一个模式,然后为了插入数据,我需要遵循该结构 为了插入三元组,我使用Jena,然后使用生成的字符串执行insert命令。下面是我的问题: 是否有方法验证我生成的RDF三元组(当前使用Jena)是否符合我的本体结构 或者,当我执行插入时,有没有一种方法可以让rdf商店(currenlty Virtuoso)通知我?我做了一些搜索,发现:。这是否意味着我的三元组将根据我的本体

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

为了插入三元组,我使用Jena,然后使用生成的字符串执行insert命令。下面是我的问题:

  • 是否有方法验证我生成的RDF三元组(当前使用Jena)是否符合我的本体结构

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

  • 也发现了。上面说

  • 在创建了我的本体之后,我应该
  • 将本体导出为RDF,以便
  • 将其导入RDF存储。将我的本体导入Virtuoso(如中所述)是否意味着步骤1和2已经完成,我现在正在执行步骤3
A)这种验证不是RDF模型的一部分,因此大多数TripleStore/API不支持它。我建议你放弃这种心态,但要回答你的问题:是的,有一些工具可以让你做这种事情。一个例子是Pellet OWL reasoner,它有一个约束验证模式,但我相信还有其他的。当然,您也可以实现自己的验证,或者通过实现某种类型的解析器侦听器来检查传入的三元组,或者通过查询对三元组存储库进行事后检查,或者使用RDF-OO映射解决方案,例如Aliba或Empire

B) 我对Virtuoso不够熟悉,无法100%确定,但我怀疑它无法根据模式验证插入。如前所述,这在RDF世界中是一件不同寻常的事情

C) (更新的):是的,如果您要将本体导入到Virtuoso中,那么您确实要将其加载到一个triplestore中,所以这是所有3个步骤

RDF图遵循“开放世界”模型,这与SQL表的“封闭世界”模型截然不同。在SQL中,您只能按照模式预先定义的方式填充表的单元格。在RDF中,“任何人都可以在任何时候对任何事情说任何话。”这给了我们很大的自由和力量,但确实需要一些学习来加以利用

您可能认为每个三元组对应于SQL表中的单个单元格--
实体、属性、值
主语、谓语、宾语
大致匹配到
主键、列、值
。在SQL世界中,最好是填充表中的每个单元格,空单元格可能被解释为有意义。在RDF世界中,稀疏数据(有许多空单元格)往往是规则,这些空单元格除了“我们没有这个值”之外没有其他意义

用于检查给定数据集是否符合“形状”(可能是本体)的新工具来自W3C in和相关项目。这些工具不限制可能输入的数据,而是检查您正在使用的数据是否符合您想要的形状

Virtuoso还没有对SHACL及其相关产品的内置支持,但这些都在待办事项清单上。也就是说,SHACL验证工具可以应用于Virtuoso中/来自Virtuoso的数据


(ObDisclaimer:products,and employed me。)

Stardog与Pellet具有相同的约束验证模式。我已编辑了问题。我希望C部分现在更清楚了。@Jeen非常感谢。帝国是否活跃?我读过这篇文章:但它可以追溯到2010年,GitHub链接已经断开。阿里巴巴呢?另外,Pellet、Startdog、阿里巴巴、帝国是免费的吗(加上开源)?@zlinks帝国就我所知是活跃的。Github链接对我来说很好——谷歌可以确保你有正确的链接。阿里巴巴也很活跃,而且开源。至于其他工具:我建议你自己查一下。@Jeen再次感谢。这是一个适合我的链接(谷歌):
https://github.com/mhgrove/Empire
。这个:
https://github.com/clarkparsia/Empire上面讨论的文章末尾的
,不起作用。