如何限制 属性 形状的单位?
How to restrict units in property shapes?
我正在为我的 ontology 中具有指定单元的某些属性制作一些 SHACL 形状。示例:
我的实例数据看起来像这样:
otlc:surgeprotector_1
rdf:type otlc:Surgeprotector ;
otlc:Nominal_voltage[
rdf:type otlc:QuantityValue ;
rdf:value "225"^^xsd:float ;
otlc:hasUnit unit:KiloV ;
] ;
.
然后我有一些形状来验证这个数据:
otlc:Nominal_voltageShape
rdf:type sh:PropertyShape ;
sh:path otlc:Nominal_voltage ;
sh:class otlc:QuantityValue ;
**otlc:hasUnit unit:KiloV ;**
sh:maxCount 1 ;
sh:minCount 1 ;
.
otlc:SurgeprotectorShape
rdf:type sh:NodeShape ;
sh:property otlc:Nominal_voltageShape ;
sh:targetClass otlc:Surgeprotector ;
.
我的问题:如何在 ontology 中的每个 属性 的实例数据中指定谓词“otlc:hasUnit”的单位?我想要的最终结果是为浪涌保护器设置一个节点形状,为 属性“nominal_voltage”设置一个 属性 形状,以将 nominal_voltage 的值限制为 unit:KiloV.我希望有一些我没有听说过的 shacl 关键字 of/realized 我可以在这里使用,添加到我的 属性 形状中(现在,我输入了我想象中存在的 shacl **)。 (例如,sh:pattern 可以用正则表达式指定值,但我想指定我的值的一段元数据的值,如果这有意义的话......)
提前致谢!
罗宾
我相信您可以用
替换突出显示的行
sh:property [
sh:path otlc:hasUnit ;
sh:hasValue unit:KiloV ;
] ;
这意味着这个 属性 形状必须应用于周围 属性 形状的所有值,即 otlc:Nominal_voltage.
的所有值
或者,您可以在更高一级的 属性 形状中使用路径表达式,例如
otlc:SurgeprotectorShape
...
sh:property [
sh:path ( otlc:Nominal_voltage otlc:hasUnit ) ;
sh:hasValue unit:KiloV ;
] ;
请注意,sh:hasValue 也意味着 sh:minCount 1,即该值必须存在。您可能需要添加 sh:maxCount 1 作为额外保护。
我正在为我的 ontology 中具有指定单元的某些属性制作一些 SHACL 形状。示例:
我的实例数据看起来像这样:
otlc:surgeprotector_1
rdf:type otlc:Surgeprotector ;
otlc:Nominal_voltage[
rdf:type otlc:QuantityValue ;
rdf:value "225"^^xsd:float ;
otlc:hasUnit unit:KiloV ;
] ;
.
然后我有一些形状来验证这个数据:
otlc:Nominal_voltageShape
rdf:type sh:PropertyShape ;
sh:path otlc:Nominal_voltage ;
sh:class otlc:QuantityValue ;
**otlc:hasUnit unit:KiloV ;**
sh:maxCount 1 ;
sh:minCount 1 ;
.
otlc:SurgeprotectorShape
rdf:type sh:NodeShape ;
sh:property otlc:Nominal_voltageShape ;
sh:targetClass otlc:Surgeprotector ;
.
我的问题:如何在 ontology 中的每个 属性 的实例数据中指定谓词“otlc:hasUnit”的单位?我想要的最终结果是为浪涌保护器设置一个节点形状,为 属性“nominal_voltage”设置一个 属性 形状,以将 nominal_voltage 的值限制为 unit:KiloV.我希望有一些我没有听说过的 shacl 关键字 of/realized 我可以在这里使用,添加到我的 属性 形状中(现在,我输入了我想象中存在的 shacl **)。 (例如,sh:pattern 可以用正则表达式指定值,但我想指定我的值的一段元数据的值,如果这有意义的话......)
提前致谢! 罗宾
我相信您可以用
替换突出显示的行sh:property [
sh:path otlc:hasUnit ;
sh:hasValue unit:KiloV ;
] ;
这意味着这个 属性 形状必须应用于周围 属性 形状的所有值,即 otlc:Nominal_voltage.
的所有值或者,您可以在更高一级的 属性 形状中使用路径表达式,例如
otlc:SurgeprotectorShape
...
sh:property [
sh:path ( otlc:Nominal_voltage otlc:hasUnit ) ;
sh:hasValue unit:KiloV ;
] ;
请注意,sh:hasValue 也意味着 sh:minCount 1,即该值必须存在。您可能需要添加 sh:maxCount 1 作为额外保护。