Rdf 外部资源的SHACL验证错误

Rdf 外部资源的SHACL验证错误,rdf,rdfs,shacl,Rdf,Rdfs,Shacl,我有一个SHACL模式,用来验证研究变量 { "@id": "m:VariableShape", "@type": "sh:NodeShape", "targetClass": "pplan:Variable", "property": [ { "path": "m:dataType", "class" : "rdfs:Datatype", "minCount":"1" }, { "path": "m:v

我有一个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" ;
ash:ValidationResult;
sh:结果验证sh:违反;
…
sh:值xsd:十进制;
sh:结果路径;
sh:resultMessage“值没有类rdfs:Datatype”;
我是否应该明确指定“xsd:decimal的类型为rdfs:Datatype”,以便能够成功验证我的数据?

来自:

SHACL使用RDF和RDFS词汇表,但不需要完整的RDFS推断。 但是,SHACL处理器可以在包含蕴涵[]的RDF图上运行——在提交给SHACL处理器之前预先计算,或者作为SHACL处理的一部分动态执行(不修改数据图或图形)。为了支持蕴涵的处理,SHACL包含属性
sh:incluation
,以指示给定图形需要什么样的推断

属性
sh:incluation
的值为IRIs。此属性的常用值包含在[]中

因此,只需添加以下三元组(在Turtle语法中):

m:VariableShape sh:incluation
,

当使用RDFS语义时,所有已识别数据类型IRI的引用都可以被认为在类
RDFS:datatype

这在TopBraid Composer中对我有用

m:VariableShape  sh:entailment  <http://www.w3.org/ns/entailment/RDFS>