pySHACL: отказ сообщить об ошибках проверки - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть список всех соответствующих файлов: https://gist.github.com/James-Hudson3010/2588d9b17dd33e15922122b8b5cf1bd7

Если я выполню:

$ pyshacl -a -f human employees.ttl

Я получу следующее правильное подтверждение report ...

Validation Report
Conforms: False
Results (3):
Constraint Violation in MaxInclusiveConstraintComponent (http://www.w3.org/ns/shacl#MaxInclusiveConstraintComponent):
    Severity: sh:Violation
    Source Shape: hr:jobGradeShape
    Focus Node: d:e4
    Value Node: Literal("8", datatype=xsd:integer)
    Result Path: hr:jobGrade
Constraint Violation in DatatypeConstraintComponent (http://www.w3.org/ns/shacl#DatatypeConstraintComponent):
    Severity: sh:Violation
    Source Shape: hr:jobGradeShape
    Focus Node: d:e3
    Value Node: Literal("3.14", datatype=xsd:decimal)
    Result Path: hr:jobGrade
Constraint Violation in MinCountConstraintComponent (http://www.w3.org/ns/shacl#MinCountConstraintComponent):
    Severity: sh:Violation
    Source Shape: hr:jobGradeShape
    Focus Node: d:e2
    Result Path: hr:jobGrade

Однако, если я разделю employee.ttl на три файла, содержащих данные схемы, фигуры и экземпляра, и запусту:

pyshacl -s shape.ttl -e schema.ttl -a -f human instance.ttl

, то получится:

Validation Report
Conforms: True

Полагаю, я правильно звоню в pyshacl.

1 Ответ

2 голосов
/ 01 апреля 2020

Когда вы используете отдельные файлы, pySHACL не может знать, с чем связать hr:Employee NodeShape вашего Shape-файла. Кажется, он знает, когда он находится в этом отдельном файле (возможно, он работает со всеми классами в файле ??).

Итак:

  1. переименуйте форму Employee, чтобы не перегружать hr:Employee имя класса: hr:EmployeeShape
  2. добавьте обратно в директиву sh:targetClass:
hr:EmployeeShape
   a sh:NodeShape ;
   sh:targetClass hr:Employee ;
   sh:property hr:nameShape ;
   sh:property hr:jobGradeShape .

Тогда многофайловый вызов дает тот же результат, что и одиночный файловый вызов .

Ваши звонки в pySHACL верны!

...