首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当部分IRIs在Triple Store中时,使用Shex验证RDF的正确方法是什么?

当部分IRIs在Triple Store中时,使用Shex验证RDF的正确方法是什么?
EN

Stack Overflow用户
提问于 2020-04-20 17:33:30
回答 1查看 24关注 0票数 1

假设我想使用Shex验证在triple Store中插入公司促销。一种可能的方法是对Shex进行编码,如下所示:

代码语言:javascript
复制
:Promotion {
   my-onto:has_person @:Person ;
   my-onto:grants_role @:Role ;
}

:Person {
   a [ foaf:Person ] ;
}

:Role {
   a [ my-onto:CompanyRole ] ;
}

这是一种简化。问题是,当插入数据时,三元组将是这样的:

代码语言:javascript
复制
:promotion-123 my-onto:has_person :person-456 ;
               my-onto:grants_role :role-CTO .

这个图不能通过Shex验证,因为它缺少所有的a三元组。

因此,为了定义和记录在这两个关系中什么是正确的IRIs,拥有形状是有意义的,但在所有现实世界的场景中,90%的数据将像上面的例子一样,没有类型(在这个例子中)关系,因此将无法验证。

记录复杂的嵌套形状以验证RDF的正确方法是什么,同时“禁用”一些检查图形中的某些点?

我正在考虑的用例是,当我需要向已经存在的“形状”中添加额外的信息时,使用像owl:NamedIndividuals这样的IRI或本体中的常量,已经存在的实体,比如Person,companies等。

EN

回答 1

Stack Overflow用户

发布于 2020-05-05 13:38:11

您的意思是插入不带rdf:type (a)声明的数据,系统通过某种推理系统添加这些声明。

ShEx不会干扰推理系统,也不会以任何特殊方式处理rdf:type声明。因此,对于该用例,可能有几种方法。

一种方法是在rdf:type声明中添加一个问号,如下所示:

代码语言:javascript
复制
:Promotion {
   my-onto:has_person @:Person ;
   my-onto:grants_role @:Role ;
}

:Person {
   a [ foaf:Person ] ? ;
}

:Role {
   a [ my-onto:CompanyRole ] ? ;
}

这意味着:Person不能有rdf:type声明,或者如果它有rdf:type声明,那么它必须包含单个值foaf:Person

另一种方法可以是具有两个形状,一个在推理之前检查输入数据,另一个在插入数据之后检查插入过程的正确行为。

请注意,对于在数据处理管道期间在不同点处工作的相同数据,可能具有不同的形状。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61319231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档