我想使用 SHACL 验证现有本体和知识库的现有 rdfs:domain 和 rdfs:range 语句。但是,使用 SHACL 执行此操作似乎非常冗长。
现有定义
:prop1 a owl:ObjectProperty;
rdfs:domain ?A;
rdfs:range ?B.
在 SHACL
:AShape a sh:NodeShape;
sh:targetClass :A;
sh:property [sh:path :prop1];
sh:closed true.
:ADomainShape a sh:NodeShape;
sh:targetSubjectsOf :prop1;
sh:class :A.
:prop1RangeShape a sh:NodeShape;
sh:targetObjectsOf :prop1;
sh:ClassB.
当您有几十个属性时,这会在原始域和范围语句中已经声明的内容上增加大量仪式。虽然可以使用脚本或多行编辑器加速该过程,但对我来说似乎仍然没有必要。有没有办法告诉像 PySHACL 这样的 SHACL 验证器只验证现有的域和范围语句而不需要所有这些额外的三元组?