pySHACL:未能报告验证错误
pySHACL: failure to report validation errors
我有一个包含所有相关文件的要点:https://gist.github.com/James-Hudson3010/2588d9b17dd33e15922122b8b5cf1bd7
如果我执行:
$ pyshacl -a -f human employees.ttl
我得到以下正确的验证报告...
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
但是,如果我将 employees.ttl 拆分为三个包含模式、形状和实例数据的文件以及 运行:
pyshacl -s shape.ttl -e schema.ttl -a -f human instance.ttl
结果是:
Validation Report
Conforms: True
我假设我正确地调用了 pyshacl。
当您使用单个文件时,pySHACL 无法知道将 Shape 文件的 hr:Employee
NodeShape 与什么相关联。它似乎知道它何时在那个文件中(也许它针对文件中的所有 classes 运行??)。
所以:
- 重命名员工形状以不重载
hr:Employee
class 名称:hr:EmployeeShape
- 在
sh:targetClass
指令中添加回来:
hr:EmployeeShape
a sh:NodeShape ;
sh:targetClass hr:Employee ;
sh:property hr:nameShape ;
sh:property hr:jobGradeShape .
然后多文件调用给出与单文件调用相同的结果。
您对 pySHACL 的调用是正确的!
我有一个包含所有相关文件的要点:https://gist.github.com/James-Hudson3010/2588d9b17dd33e15922122b8b5cf1bd7
如果我执行:
$ pyshacl -a -f human employees.ttl
我得到以下正确的验证报告...
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
但是,如果我将 employees.ttl 拆分为三个包含模式、形状和实例数据的文件以及 运行:
pyshacl -s shape.ttl -e schema.ttl -a -f human instance.ttl
结果是:
Validation Report
Conforms: True
我假设我正确地调用了 pyshacl。
当您使用单个文件时,pySHACL 无法知道将 Shape 文件的 hr:Employee
NodeShape 与什么相关联。它似乎知道它何时在那个文件中(也许它针对文件中的所有 classes 运行??)。
所以:
- 重命名员工形状以不重载
hr:Employee
class 名称:hr:EmployeeShape
- 在
sh:targetClass
指令中添加回来:
hr:EmployeeShape
a sh:NodeShape ;
sh:targetClass hr:Employee ;
sh:property hr:nameShape ;
sh:property hr:jobGradeShape .
然后多文件调用给出与单文件调用相同的结果。
您对 pySHACL 的调用是正确的!