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



假设我想使用Shex验证在三重商店中插入公司促销。一种可能的方法是将Shex编码为:

:Promotion {
my-onto:has_person @:Person ;
my-onto:grants_role @:Role ;
}
:Person {
a [ foaf:Person ] ;
}
:Role {
a [ my-onto:CompanyRole ] ;
}

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

:promotion-123 my-onto:has_person :person-456 ;
my-onto:grants_role :role-CTO .

并且该图不会通过Shex验证,因为它缺少所有的CCD_ 1三元组。

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

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

我正在考虑的用例是,当我需要使用诸如owl:NamedIndividuals之类的IRI或本体中的常量、诸如个人、公司等之类的现有实体向已经存在的"形状"添加额外信息时。

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

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

一种方法是在rdf:type声明中添加一个问号:

: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声明,则它必须包含单个值a0。

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

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

相关内容

  • 没有找到相关文章

最新更新