如何解决rdfs:subPropertyOf 的 Shacl 处理
我有以下 shacl 规范
efdn:Relation
rdf:type owl:Class ;
rdf:type sh:NodeShape ;
rdfs:label "Relation"@en ;
sh:property [
sh:path efdn:nondirectionalLinkWith ;
sh:NodeKind sh:IRI ;
sh:maxCount 2 ;
sh:minCount 2 ;
] ;
.
我的目标是表达一个 Relation 必须完全由 "nondirectionalLinkWith" 对象属性连接。更具体地说,我想表示它可以是 "nondirectionalLinkWith" 的任何 subPropertyOf。 换句话说,可以说,一个 Relation 对象必须通过 2 个无方向的 Link 连接。其中非定向链接是任何对象属性,它是 subPropertyOf "nondirectionalLinkWith"。
1 ) 我想知道如何使用 shacl 来表达这一点。
到目前为止,我看到的唯一可能性是明确使用 RDFS reasoner。也就是说,虽然 Shacl 优雅地处理 rdfs:subClassOf,因此不需要使用 RDFS reasoner,但 rdfs:SubPropertyOf 似乎没有支持。
我在这里是否正确,或者有一种方法可以直接在 shacl 中表达这样的约束。
使用 RDFS reasoner 我们有:
Construct {
:x1 :p1 :x2
} Where {
:x1 :p2. :x2
:p2 rdfs:subPropertyOf :p1.
}
这允许然后验证关系。但是,我想知道我是否可以完全避免使用 RDFS reasoner 来处理这样一个简单的情况?如果它可以以某种方式用纯 shacl 表示,或者任何其他解决方法将不胜感激。
解决方法
首先注意约束属性sh:nodeKind必须以小写n开头
SHACL 不直接支持 rdfs:subPropertyOf,因此您是对的,要求 RDFS 推理是一种方法。为此,您可以使用 sh:entailment,请参阅 https://www.w3.org/TR/shacl/#shacl-rdfs
如果您事先知道子属性,您还可以使用替代路径并在 | 中枚举所有子属性。列表,参见https://www.w3.org/TR/shacl/#property-path-alternative
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。