我有一个SHACL模式,用于验证研究变量。
{
"@id": "m:VariableShape",
"@type": "sh:NodeShape",
"targetClass": "pplan:Variable",
"property": [
{
"path": "m:dataType",
"class" : "rdfs:Datatype",
"minCount":"1"
},
{
"path": "m:varName",
"datatype": "xsd:string",
"minCount":"1"
}
]
},
{
"@id" : "m:dataType",
"@type" : "owl:ObjectProperty"
},
{
"@id": "m:varName",
"@type": "owl:DatatypeProperty"
}我正试图验证以下数据:
{
"@id" : "ex:bp_var",
"@type" : "pplan:Variable",
"m:dataType" : "xsd:decimal",
"m:varName" : "blood_pressure"
}对此数据进行模式验证将返回一个与以下内容类似的冲突报告:
a sh:ValidationResult ;
sh:resultSeverity sh:Violation ;
…
sh:value xsd:decimal ;
sh:resultPath <http://.../m#dataType> ;
sh:resultMessage "Value does not have class rdfs:Datatype" ;我是否应该显式地指定‘xsd:十进制是rdfs:Datatype’类型,以便能够成功地验证我的数据?
发布于 2018-12-22 14:16:24
SHACL使用RDF和RDFS词汇表,但不需要完整的RDFS推断。然而,SHACL处理器可以在包含斯派克11-附属物的RDF图上操作--在提交给SHACL处理器之前预先计算,或者作为SHACL处理的一部分执行(而不修改数据图或形状图)。为了支持对附加条件的处理,SHACL包含属性
sh:entailment,以指示给定形状图所需的推理。 属性sh:entailment的值是IRIs。此属性的公共值由[斯派克11-附属物]覆盖。
因此,只需添加以下三元组(在Turtle语法中):
m:VariableShape sh:entailment <http://www.w3.org/ns/entailment/RDFS>确实如此,
当使用RDFS语义时,所有已识别的数据类型IRI的引用都可以被认为是在类
rdfs:Datatype中。
这对我来说是TopBraid作曲家的作品。
https://stackoverflow.com/questions/53890471
复制相似问题