rdfs:subPropertyOf 的 Shacl 处理
Shacl handling of rdfs:subPropertyOf
我有以下 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 ;
] ;
.
我的目标是表达关系必须通过 "nondirectionalLinkWith" object 属性 精确连接。更具体地说,我想表达它可以是 "nondirectionalLinkWith" 的任何 subPropertyOf。
换句话说,可以说,一个Relation对象是这样的,它必须由2个无方向的Link连接起来。其中非定向 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
我有以下 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 ;
] ;
.
我的目标是表达关系必须通过 "nondirectionalLinkWith" object 属性 精确连接。更具体地说,我想表达它可以是 "nondirectionalLinkWith" 的任何 subPropertyOf。 换句话说,可以说,一个Relation对象是这样的,它必须由2个无方向的Link连接起来。其中非定向 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