Ошибка проверки SHACL для внешних ресурсов - PullRequest
0 голосов
/ 21 декабря 2018

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

0 голосов
/ 22 декабря 2018

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

SHACL использует словари RDF и RDFS, но полное вывод RDFS не требуется.Однако процессоры SHACL МОГУТ работать с графами RDF, которые включают в себя entailments [ sparql11-entailment ] - либо предварительно вычисленные перед отправкой в ​​процессор 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.

...