Ошибка проверки SHACL для внешних ресурсов

У меня есть схема 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 ответ

Решение

Из 1.5 Взаимосвязь между SHACL и выводом RDFS:

SHACL использует словари RDF и RDFS, но полное вывод RDFS не требуется. Однако процессоры SHACL МОГУТ работать с графами RDF, которые включают в себя entailments [ https://www.w3.org/TR/sparql11-entailment/] - либо предварительно вычисленные перед отправкой в ​​процессор SHACL, либо выполняемые на лету как часть обработки SHACL (без изменения графа данных или графа фигур). Чтобы поддержать обработку влечений, SHACL включает свойство sh:entailment чтобы указать, какой вывод требуется для данного графика форм.

Значения имущества sh:entailment являются IRI. Общие значения для этого свойства указаны в [ https://www.w3.org/TR/sparql11-entailment/].

Таким образом, просто добавьте следующую тройку (в синтаксисе Turtle):

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

Действительно,

При использовании семантики RDFS можно считать, что ссылки всех распознанных IRI типов данных находятся в классе rdfs:Datatype,

Это работает для меня в TopBraid Composer.

Другие вопросы по тегам