如果在OWL Property Restrictions和SHACL之间进行选择,是否还有理由再选择 OWL 方法?
特别是关于基数约束,我想知道是否认为 SHACL 会取代 OWL。根据我的随意检查,语法看起来很相似。
我可能错过了 OWL 基数约束的目的。作为本体的一部分,它们应该促进推理(与验证不同的关注点)。但是基数约束如何促进推理?
如果在OWL Property Restrictions和SHACL之间进行选择,是否还有理由再选择 OWL 方法?
特别是关于基数约束,我想知道是否认为 SHACL 会取代 OWL。根据我的随意检查,语法看起来很相似。
我可能错过了 OWL 基数约束的目的。作为本体的一部分,它们应该促进推理(与验证不同的关注点)。但是基数约束如何促进推理?
OWL 和 SHACL 之间的区别如下表所示。
猫头鹰 | SHACL |
---|---|
基于开放世界假设 | 基于封闭世界假设 |
专为推理而设计 | 专为验证而设计 |
计算成本低(典型问题是可判定的) | ? |
许多推论几乎“开箱即用” | 必须手动定义很多约束 |
作为 RDF 的文档很有用 |
至于 OWL 中的基数约束,这些约束在某些情况下允许在某些方面关闭世界,以获得额外的推理。
基数约束的逻辑在 OWL 和 SHACL 中是相反的。非正式地:
在 SHACL 中,
ex:PersonShape
a sh:NodeShape ;
sh:targetClass ex:Person ;
sh:path ex:parent ;
sh:minCount 1 .`
意味着如果某人是一个人,那么他/她必须至少有一个父母。
在猫头鹰,
ex:Person owl:equivalentClass [ rdf:type owl:Restriction ;
owl:onProperty ex:parent ;
owl:minCardinality "1" ] . `
意味着如果某人至少有一个父母,那么他/她就是一个人。
SHACL 与 RDF Schema 和 OWL 有何不同?RDFS 和 OWL 是为一个“开放世界”而设计的,在这个世界中,数据可以从语义网上的许多地方组装起来。多年来,这个设计目标引起了很多挫折,因为它甚至无法检查最明显的完整性约束,例如属性是否具有一定数量的值。相比之下,SHACL 假设一个“封闭的世界”,符合典型业务用户的期望。此外,OWL 已经针对某种类型的分类问题进行了优化,但它不能用于执行数据验证所需的常规操作,例如数学计算或文本操作。SHACL 更具表现力。此外,它与 SPARQL 无缝集成以表达几乎任意条件。顺便说一句,使用 SHACL 语句增量扩展 RDFS 或 OWL 模型是非常好的,
根据我的经验,大多数 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
and unionOf
)也不是很有用。
甚至rdfs:domain/range
会因为它们是单态的而导致重用问题:将它们与多个值一起使用,你就会遇到麻烦。
所以我们在 Ontotext 一直在使用最近基于示例的模型、non-committalschema:domain/rangeIncludes
和 shape 来表达类和道具如何一起使用。
我认为 OWL 完全基于开放世界假设这一事实使其非常独特。在某些用例中,您可以将来自许多不同来源的需要此独特功能的许多数据集组合在一起。对于任何给定的事实,可能总会有来自不同来源的不同意见。在您的“数据结构”(或企业知识图)中对“真相的多个版本”的基本支持至关重要,甚至更强大:它是企业范围用例的唯一最重要的推动因素。对于 EKG,我们需要 OWL 作为核心。形成所有数据的“无偏见”表示,不强制任何特定的封闭世界观,推断所有正确的事实。在洋葱圈中有很多翻译语言,例如 SHACL(对象的严格上下文特定的封闭世界形状),