SHACL 验证现有域和范围定义?
SHACL validate existing domain and range definitions?
我想用 SHACL 验证现有 ontology 和知识库的现有 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 验证器只验证现有的域和范围语句而不需要所有这些额外的三元组?
首先让我说 rdfs:domain 和 rdfs:range 不是限制条件,并不代表您的意思。他们只是在产生推论。话虽如此,过去许多人只是因为没有其他建模语言而使用它们来“表示”约束。有关背景,请参阅
https://www.topquadrant.com/owl-blog/
如果您不想将 RDFS 三元组复制为单独的 SHACL 约束,您可以编写具有 sh:targetSubjectsOf rdfs:domain(和范围)的单个通用 SHACL 形状,然后使用 SPARQL约束来检查除了具有给定 属性 的值的域 class 之外没有 class 的实例。最终结果将是一次检查所有 rdfs:domain 个语句。
但可以说 RDFS 应该单独使用。如果您想使用 closed-world 语义,您应该使用专为此目的而设计的语言,即 SHACL。
(顺便说一句,如果你想要更高的带宽来讨论此类事情,有一个 Discord 组 https://twitter.com/HolgerKnublauch/status/1461590465304662019)
我想用 SHACL 验证现有 ontology 和知识库的现有 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 验证器只验证现有的域和范围语句而不需要所有这些额外的三元组?
首先让我说 rdfs:domain 和 rdfs:range 不是限制条件,并不代表您的意思。他们只是在产生推论。话虽如此,过去许多人只是因为没有其他建模语言而使用它们来“表示”约束。有关背景,请参阅
https://www.topquadrant.com/owl-blog/
如果您不想将 RDFS 三元组复制为单独的 SHACL 约束,您可以编写具有 sh:targetSubjectsOf rdfs:domain(和范围)的单个通用 SHACL 形状,然后使用 SPARQL约束来检查除了具有给定 属性 的值的域 class 之外没有 class 的实例。最终结果将是一次检查所有 rdfs:domain 个语句。
但可以说 RDFS 应该单独使用。如果您想使用 closed-world 语义,您应该使用专为此目的而设计的语言,即 SHACL。
(顺便说一句,如果你想要更高的带宽来讨论此类事情,有一个 Discord 组 https://twitter.com/HolgerKnublauch/status/1461590465304662019)