簡體   English   中英

外部資源的 SHACL 驗證錯誤

[英]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”才能成功驗證我的數據?

來自1.5 SHACL 和 RDFS 推理之間的關系

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM