【问题标题】:SHACL Validation Error for External Resources外部资源的 SHACL 验证错误
【发布时间】:2018-12-21 20:29:14
【问题描述】:

我有一个用于验证研究变量的 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 is of rdfs:Datatype' 类型才能成功验证我的数据?

【问题讨论】:

    标签: rdf rdfs shacl


    【解决方案1】:

    来自1.5 Relationship between SHACL and RDFS inferencing

    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>
    

    Indeed,

    当使用 RDFS 语义时,所有可识别的数据类型 IRI 的所指对象都可以被认为属于 rdfs:Datatype 类。

    这在 TopBraid Composer 中适用于我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-07
      • 1970-01-01
      相关资源
      最近更新 更多