jac*_*646 6 rdf semantic-web constraints owl shacl
如果在OWL Property Restrictions和SHACL之间做出选择,是否有理由再选择OWL方法?
特别是关于基数约束,我想知道SHACL是否被认为是取代OWL.对于我的随意检查,语法看起来很相似.
我可能错过了OWL基数约束的目的.作为本体的一部分,它们应该促进推理(与验证有关的单独问题).但是,基数约束如何促进推理?
Sta*_*lin 13
OWL和SHACL之间的差异如下表所示.
| OWL | SHACL |
|------------------------------------|-----------------------------------|
| Based on open world assumption | Based on closed world assumption |
|------------------------------------|-----------------------------------|
| Designed for inferencing | Designed for validation |
|------------------------------------|-----------------------------------|
| Computationally cheap | ? |
| (typical problems are decidable) | ? |
|------------------------------------|-----------------------------------|
| A lot of inferences | One have to define a lot |
| almost "out of the box" | of ad-hoc constraints manually |
|------------------------------------|-----------------------------------|
| Is useful as documentation for RDF | |
Run Code Online (Sandbox Code Playgroud)
至于OWL中的基数约束,这些约束允许在某些情况下在某些方面关闭世界,以便得到额外的推论.
基数约束的逻辑在OWL和SHACL中是相反的.通俗地说:
在SHACL,
ex:PersonShape
a sh:NodeShape ;
sh:targetClass ex:Person ;
sh:path ex:parent ;
sh:minCount 1 .
意味着如果某人是一个人,那么他/她必须至少有一个父母.
在OWL中
ex:Person owl:equivalentClass [ rdf:type owl:Restriction ;
owl:onProperty ex:parent ;
owl:minCardinality "1" ] .
意味着如果某人至少有一个父母,那么他/她就是一个人.
来自TopBraid营销材料:
SHACL与RDF Schema和OWL有何不同?RDFS和OWL是为"开放世界"而设计的,其中数据可以从语义Web上的许多地方汇编而成.这个设计目标多年来引起了很多挫折,因为它甚至无法检查最明显的完整性约束,例如属性是否具有一定数量的值.相比之下,SHACL采用"封闭世界",符合典型商业用户的期望.此外,OWL已针对某种类型的分类问题进行了优化,但它不能用于进行数据验证所需的常规操作,如数学计算或文本操作.SHACL更具表现力.此外,它与SPARQL无缝集成,以表达几乎任意的条件.顺便说一句,使用SHACL语句逐步扩展RDFS或OWL模型是完全正确的,支持两个世界.
另见:http://spinrdf.org/shacl-and-owl.html
小智 8
根据我的经验,大多数OWL用户并没有真正理解或不关心OWL的实际语义(开放世界假设等).在许多情况下,使用OWL基数限制因为没有其他选择.然而,正如其他地方所指出的,owl:maxCardinality 1的语义是大多数人所期望的:它意味着如果属性有两个值,则假定这些值是相同的(owl:sameAs).在SHACL中,sh:maxCount 1表示如果属性有两个值,则需要删除其中一个值.
继续使用OWL支持SHACL的主要原因是OWL具有更长的历史(即更多工具,可重用的本体和示例),并且如果您想要使用OWL(DL)推理.但是,如果您需要传统的封闭世界语义,请使用SHACL.请注意,SHACL和OWL可以混合使用,例如在一个文件中定义类和属性,然后在另一个文件中定义OWL限制,在另一个文件中定义SHACL约束.
根据我的经验,OWL 推理很少使用,复杂的 OWL 结构(包括Restriction
和unionOf
)也不是很有用。
甚至rdfs:domain/range
会导致重用问题,因为它们是单态的:将它们与多个值一起使用,这会带来麻烦。
所以我们 Ontotext 最近一直在使用基于示例的模型、非提交模型schema:domain/rangeIncludes
和形状来表达类和道具如何一起使用。