[英]SHACL Validation Error for External Resources
我有一個 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:decimal 的類型為 rdfs:Datatype”才能成功驗證我的數據?
SHACL 使用 RDF 和 RDFS 詞匯表,但不需要完整的 RDFS 推理。 然而,SHACL 處理器可以對包含蘊涵 [ sparql11-entailment ] 的 RDF 圖進行操作——要么在提交給 SHACL 處理器之前預先計算,要么作為 SHACL 處理的一部分即時執行(不修改數據圖或形狀圖)。 為了支持對蘊涵的處理,SHACL 包括屬性
sh:entailment
以指示給定形狀圖需要什么推理。屬性
sh:entailment
的值是 IRI。 [ sparql11-entailment ] 涵蓋了此屬性的常見值。
因此,只需添加以下三元組(在 Turtle 語法中):
m:VariableShape sh:entailment <http://www.w3.org/ns/entailment/RDFS>
的確,
當使用 RDFS 語義時,所有可識別的數據類型 IRI 的所指對象都可以被認為是在
rdfs:Datatype
類中。
這在 TopBraid Composer 中對我有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.