我试图掌握语义网的概念。我发现很难理解RDF和OWL之间的确切区别。OWL是RDF的扩展还是这两种完全不同的技术?


当前回答

RDFS允许您通过在一个灵活的、基于三元的格式上进行标准化,然后提供一个词汇表(“关键字”,如rdf:type或RDFS:subClassOf)来表达事物之间的关系,这些词汇表可以用来表示事物。

OWL类似,但更大、更好、更糟。OWL让您更多地了解您的数据模型,它向您展示了如何有效地使用数据库查询和自动推理器,它还提供了有用的注释,以便将数据模型带入现实世界。

第一个区别:词汇

在RDFS和OWL之间的区别中,最重要的是OWL提供了一个大得多的词汇表,您可以用它来表达事情。

例如,OWL包括所有来自RDFS的老朋友,如RDFS:type、RDFS:domain和RDFS:subPropertyOf。然而,OWL也给你新的和更好的朋友!例如,OWL允许你用集合操作来描述你的数据:

Example:Mother    owl:unionOf     (Example:Parent, Example:Woman)

它允许你定义跨数据库的等价值:

AcmeCompany:JohnSmith  owl:sameAs    PersonalDatabase:JohnQSmith

它允许你限制属性值:

Example:MyState     owl:allValuesFrom     (State:NewYork, State:California, …)

事实上,OWL提供了如此多新的、复杂的词汇来用于数据建模和推理,这是它自己的教训!

第二个区别:刚性

与RDFS不同的另一个主要区别是,OWL不仅告诉您如何使用某些词汇表,而且还告诉您如何不能使用这些词汇表。相比之下,RDFS为您提供了一个任意的世界,您可以添加几乎任何您想要的三重组合。

例如,在RDFS中,任何你想要的东西都可以是RDFS:Class的实例。你可能决定说Beagle是一个rdfs:类,然后说Fido是Beagle的一个实例:

Example: Beagle    rdf:Type    rdfs:Class

Example:Fido    rdf:Type    Example: Beagle

接下来,你可能想说关于Beagle的事情,也许你想说Beagle是在英国饲养的狗的一个例子:

Example:Beagle    rdf:Type    Example:BreedsBredInEngland

Example: BreedsBredInEngland    rdf:Type    rdfs:Class

本例中有趣的地方是,示例:Beagle同时用作类和实例。比格犬是菲多的一个阶级,但比格犬本身是另一个阶级的一员:在英国繁殖的东西。

在RDFS中,所有这些都是完全合法的,因为RDFS并没有真正限制哪些语句可以插入,哪些语句不能插入。相比之下,在OWL中,或者至少在某些类型的OWL中,上面的语句实际上是不合法的:您根本不允许说某个东西可以既是类又是实例。

这是RDFS和OWL之间的第二个主要区别。RDFS使所有人都可以自由使用,任何东西都可以使用,就像一个充满了狂野西部、speak - easy和萨尔瓦多·达利的世界。OWL的世界强加了一个更加严格的结构。

第三个区别:注释,元数据

假设您已经花了一个小时来构建描述您的无线电制造业务的本体。在午餐期间,您的任务是为您的时钟制造业务构建一个本体。今天下午,在喝完一杯美味的咖啡后,您的老板现在告诉您,您必须为您的高利润时钟收音机业务构建一个本体。有没有一种方法可以很容易地重复利用上午的工作?

OWL让这类事情变得非常非常简单。Owl:Import是您将在时钟无线电情况下使用的,但是Owl还提供了丰富的注释,例如Owl: versionInfo、Owl: backwardsCompatibleWith和Owl: deprecedproperty,可以轻松地将数据模型链接到一个相互一致的整体中。

与RDFS不同,OWL一定能满足您所有的元数据建模需求。

结论

OWL为您提供了更大的词汇表,这使得您可以轻松地谈论有关数据模型的任何内容。它甚至允许你根据当今计算机的计算现实来调整你说的话,并为特定的应用程序(例如搜索查询)进行优化。此外,OWL允许您使用标准注释框架轻松地表示不同本体之间的关系。

与RDFS相比,所有这些都是优势,通常值得您花费额外的努力来熟悉它们。

来源:RDFS vs. OWL

其他回答

RDF是一种定义三元“主语”、“谓语”、“值”的方法。 例如,如果我想说,

"我叫皮埃尔"

我会写

<mail:me@where.com> <foaf:name> "Pierre"

参见<foaf:name> ?它是FOAF本体的一部分。本体是描述给定主题的属性和类的正式方式,OWL是定义本体的一种(RDF)方式。

你使用c++, Java等等…定义一个类,一个子类,一个字段,等等…

class Person
{
    String email_as_id;
    String name;
}

RDF使用OWL来定义这类语句。

另一个问这类问题的地方:http://www.semanticoverflow.com/

首先,正如前面所指出的,owl可以在RDF中序列化。

其次,OWL通过提供使用正式的可计算一阶描述逻辑定义三元组组件的设备,为RDF添加了本体功能(RDF本身仅为正式的知识表示提供了极其有限的功能)。这就是所谓的“语义丰富性”。

第三,重要的是要意识到在OWL- full(对于OWL 1)中rdfs:class和OWL:class是等价的,在OWL- dl中,OWL:class是rdfs:class的子类。实际上,这意味着您可以使用OWL本体作为RDF的模式(它不正式地需要模式)。

我希望这有助于进一步澄清。

在WC3文档对象模型中,文档是一个抽象的东西:包含文本、注释、属性和其他嵌套元素的元素。

在语义网中,我们处理的是一组“三元组”。每个三重是:

一个主题,三元组的内容,id,数据库主键,一个URI;而且 谓词,“动词”,“属性”,“数据库列”-另一个URI;而且 对象,原子值或一些URI。

OWL之于语义web就像schema之于W3C文档对象模型。它记录了各种uri的含义,并指定如何以一种可以由机器检查的正式方式使用它们。语义web对于应用于它的OWL可能有效也可能无效,就像文档对于模式可能有效也可能无效一样。

RDF之于语义网就像XML之于DOM——它是一组三元组的序列化。

当然,RDF通常被序列化为XML文档……但重要的是要理解RDF与“RDF的XML序列化”不是一回事。

类似地,OWL可以使用OWL/XML序列化,或者(不好意思)可以表示为RDF,而RDF本身通常序列化为XML。

基本的语义web堆栈已经在这篇文章中解释了很多。我想把重点放在最初的问题上,并比较RDF和OWL。

OWL是RDF和RDF- s的超级集(在上面) OWL允许有效地使用RDF和RDF- s OWL有一些扩展的词汇表 类和个人(“实例”) 属性和数据类型(“谓词”) OWL是正确的推理和推断所必需的 OWL有三种方言,精简,描述逻辑和完整

使用OWL是通过了解一些事实来获得更多意义(推理和推断)的必要条件。这种“动态创建”的信息可以进一步用于像SPARQL中那样的一致查询。

一些例子将显示这实际上与OWL一起工作——这些都是从我2015年在西班牙马略卡的TYPO3camp上关于语义网基础知识的演讲中摘录出来的。

规则等价

Spaniard: Person and (inhabitantOf some SpanishCity)

这意味着西班牙人必须是一个人(因此继承了推理部分中的所有财产),并且必须至少居住在一个(或多个)西班牙城市。

属性的含义

<Palma isPartOf Mallorca>
<Mallorca contains Palma>

该示例显示了对属性isPartOf和contains应用inverseOf的结果。

逆 对称的 传递 不相交的 ...

属性的基数

<:hasParent owl:cardinality “2“^^xsd:integer>

这定义了每个事物(在这个场景中很可能是人)都有两个父元素——基数被分配给hasParent属性。

最低 最大 确切的

一图胜千言!下面这张图应该可以加强克里斯托弗·古特里奇的观点 在这个回答中说语义网是一个“分层架构”。

来源:https://www.obitko.com/tutorials/ontologies-semantic-web/semantic-web-architecture.html