问题描述
sh:qualifiedValueShape 状态的定义:
指定数量的值节点需要符合的形状。形状中 sh:qualifiedValueShape 的值必须是格式良好的形状。节点形状不能有 sh:qualifiedValueShape 的任何值。这是 sh:QualifiedMinCountConstraintComponent 和 sh:QualifiedMaxCountConstraintComponent 的强制参数。
然后我们有下面的例子
ex:QualifiedValueShapeExampleShape
a sh:NodeShape ;
sh:targetNode ex:QualifiedValueShapeExampleValidResource ;
sh:property [
sh:path ex:parent ;
sh:minCount 2 ;
sh:maxCount 2 ;
sh:qualifiedValueShape [
sh:path ex:gender ;
sh:hasValue ex:female ;
] ;
sh:qualifiedMinCount 1 ;
] .
ex:HandShape
a sh:NodeShape ;
sh:targetClass ex:Hand ;
sh:property [
sh:path ex:digit ;
sh:maxCount 5 ;
] ;
sh:property [
sh:path ex:digit ;
sh:qualifiedValueShape [ sh:class ex:Thumb ] ;
sh:qualifiedValueShapesdisjoint true ;
sh:qualifiedMinCount 1 ;
sh:qualifiedMaxCount 1 ;
] ;
sh:property [
sh:path ex:digit ;
sh:qualifiedValueShape [ sh:class ex:Finger ] ;
sh:qualifiedValueShapesdisjoint true ;
sh:qualifiedMinCount 4 ;
sh:qualifiedMaxCount 4 ;
] .
虽然我对这两个示例都了解得很好,但我不明白的是,第二个示例在技术上如何与规范相匹配。我更特别指出
sh:qualifiedValueShape [ sh:class ex:Finger ]
就是这样。虽然在
sh:qualifiedValueShape [
sh:path ex:gender ;
sh:hasValue ex:female ;
] ;
我们可以看到空白节点是一个属性形状,我不知道空白节点是什么形状
sh:qualifiedValueShape [ sh:class ex:Finger ]
确实代表。
有什么隐含的东西我在这里看不到吗? sh:class 用于属性形状,那么这里的实际路径是什么?
解决方法
[ sh:class ex:Finger ] 约束是一个隐式节点形状(因为它没有 sh:path 三元组)。这意味着 ex:digit 的四个值必须符合指定的形状,即它们必须是 ex:Finger 的实例。节点形状直接针对节点进行评估,并且在该阶段路径已经通过周围的属性形状进行了评估。