213

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

4

12 回答 12

292

语义网是分层的。这是我认为您感兴趣的内容的快速摘要。

更新:请注意,RDFS 用于定义数据的结构,而不是OWL。OWL 描述了普通编程(例如 C 结构)不关心的语义关系,并且更接近 AI 研究和集合论。

三元组和 URI

Subject - Predicate - Object

这些描述了一个事实。通常 URI 用于主语和谓语。该对象是另一个 URI 或文字,例如数字或字符串。文字可以有一个类型(也是一个 URI),也可以有一种语言。是的,这意味着三元组最多可以包含 5 位数据!

例如,三元组可能会描述查尔斯是哈利的父亲这一事实。

<http://example.com/person/harry> <http://familyontology.net/1.0#hasFather> <http://example.com/person/charles> .

三元组是对逻辑极端的数据库规范化。它们的优点是您可以将来自多个来源的三元组加载到一个数据库中而无需重新配置。

RDF 和 RDFS

下一层是 RDF - 资源描述框架。RDF 为三元组定义了一些额外的结构。RDF 定义的最重要的东西是一个称为“rdf:type”的谓词。这用于说事物具有某些类型。每个人都使用 rdf:type 这使得它非常有用。

RDFS(RDF Schema)定义了一些代表主语、宾语、谓语等概念的类。这意味着您可以开始对事物的类别和关系类型进行陈述。在最简单的层面上,您可以说明诸如http://familyontology.net/1.0#hasFather是一个人和一个人之间的关系。它还允许您以人类可读的文本描述关系或类的含义。这是一个模式。它告诉您各种类和关系的合法用途。它还用于指示类或属性是更一般类型的子类型。例如,“HumanParent”是“Person”的子类。“Loves”是“Knows”的子类。

RDF 序列化

RDF 可以多种文件格式导出。最常见的是 RDF+XML,但这有一些弱点。

N3 是一种非 XML 格式,更易于阅读,并且有一些更严格的子集(Turtle 和 N-Triples)。

重要的是要知道 RDF 是一种处理三元组的方式,而不是文件格式。

XSD

XSD 是一个命名空间,主要用于描述属性类型,如日期、整数等。它通常出现在 RDF 数据中,用于标识文字的特定类型。它也用于 XML 模式,这是一种稍微不同的鱼。

猫头鹰

OWL 将语义添加到模式中。它允许您指定更多关于属性和类的信息。它也以三元组表示。例如,它可以指示“如果 A isMarriedTo B”,那么这意味着“B isMarriedTo A”。或者如果“ C isAncestorOf D ”和“ D isAncestorOf E ”那么“ C isAncestorOf E”。owl 增加的另一个有用的东西是能够说两件事是相同的,这对于连接以不同模式表示的数据非常有帮助。你可以说一个模式中的“父级”关系是 owl:sameAs“父级”在一个模式中其他一些模式。您也可以用它来表示两件事是相同的,例如维基百科上的“猫王”与 BBC 上的相同。这非常令人兴奋,因为这意味着您可以开始合并来自多个站点的数据(这是“关联数据”)。

您还可以使用 OWL 来推断隐含的事实,例如“ C isAncestorOf E ”。

于 2009-11-28T19:50:35.733 回答
92

简而言之:

  • RDF 定义了如何写东西
  • OWL 定义写什么

正如之前的海报所写,RDF 是一个规范,它告诉您如何定义三元组。

问题是 RDF 允许您定义所有内容,因此您可以编写如下声明:

| subject | predicate | object |
|---------|-----------|--------|
| Alex    | Eats      | Apples |
| Apples  | Eats      | Apples |
| Apples  | Apples    | Apples |

这些三元组构成有效的 RDF 文档。

但是,从语义上讲,您了解这些陈述是不正确的,RDF 无法帮助您验证您所写的内容。

这不是一个有效的本体。

OWL 规范准确地定义了您可以使用 RDF 编写什么以获得有效的本体。

本体可以有几个属性。

这就是为什么 OWL (ver 1) 定义了几个版本,如 OWL DL、OWL Lite、OWL Full。

于 2009-11-16T10:30:08.237 回答
34

RDF、RDFS 和 OWL 是表达日益复杂的信息或知识的手段。所有这些都可以用 RDF/XML 语法(或任何其他 RDF 序列化语法,例如 Turtle 或 N3)进行序列化。

这些技术是相关的并且应该是可互操作的,但它们有不同的起源,这可能是它们之间的关系难以掌握的原因。一个或另一个的选择取决于您正在建模的情况需要多少复杂性。

表现力总结

RDF:简单的表示,专注于实例及其类型的映射(rdf:type)。可以定义自定义属性来链接数据和创建三元组。使用 SPARQL 查询 RDF 数据。在 Turtle 中序列化的 RDF 示例:

@prefix : <http://www.example.org/> .
:john    rdf:type           :Man .
:john    :livesIn  "New-York" .
:livesIn    rdf:type    rdf:Property .

RDFS:有些情况单独使用 RDF 不容易建模,有时表示更复杂的关系(例如子类(类型的类型))会很有趣。RDFS 提供了表示此类情况的特殊方法,使用类似rdfs:subClassOfrdfs:range的结构rdfs:domain。理想情况下,推理器可以理解 RDFS 语义并根据关系扩展三元组的数量:例如,如果您有三元组John a ManMan rdfs:subClassOf Human那么您也应该生成三元组John a Human。请注意,单独使用 RDF 是不可能的。RDFS 数据使用 SPARQL 进行查询。Turtle 中序列化的 RDFS 示例:

@prefix : <http://www.example.org/> .
:john    rdf:type           :Man .
:Man    rdfs:subClassOf    :Human .
:john    :livesIn  "New-York" .
:livesIn    rdf:type    rdf:Property .
# After reasoning
:john    rdf:type    :Human .

OWL:最高水平的表现力。类之间的关系可以基于描述逻辑(数学理论)进行形式化建模。OWL 严重依赖推理器,可以表达复杂的结构,例如链接属性或类之间的限制。OWL 用于在 RDF 数据集之上构建本体或模式。由于 OWL 可以序列化为 RDF/XML,理论上可以通过 SPARQL 查询它,但使用 DL 查询(通常是标准的 OWL 类表达式)查询 OWL 本体要直观得多。在 Turtle 中序列化的 OWL 构造示例。

@prefix : <http://www.example.org/> .
:livesIn    rdf:type    owl:DatatypeProperty .
:Human    rdf:type    owl:Class .
:Man   rdf:type    owl:Class .
:Man    rdfs:subClassOf    :Human .
:John    rdf:type    :Man . 
:John    rdf:type    owl:NamedIndividual .
于 2013-04-14T21:44:27.773 回答
15

当您使用术语 RDF 时,您必须区分两件事:

  1. 您可以将 RDF 称为概念

    一种使用三元组集合来描述事物/逻辑/任何事物的方法。

    例子:

    “安娜有苹果。” “苹果很健康。”

    上面有两个三元组,描述了两个资源“安娜”和“苹果”。RDF(资源描述框架)的概念是您可以仅用 3 个单词(术语)的集合来描述资源(任何事物)。在这个级别,你不关心你是如何存储信息的,不管你是有一个 3 个单词的字符串,还是墙上的一幅画,或者一个有 3 列的桌子等等。

    在这个概念级别上,唯一重要的是您可以使用三重语句来表示您想要的任何内容。

  2. 您可以将 RDF 称为词汇表

    词汇表只是存储在文件或某处的术语定义的集合。这些定义的术语的目的是在其他描述中普遍重复使用,以便人们可以更轻松地以标准方式描述数据(资源)。

    在网络上,您可以找到一些标准词汇表,例如:

    RDF ( https://www.w3.org/1999/02/22-rdf-syntax-ns )

    RDFS ( https://www.w3.org/2000/01/rdf-schema# )

    猫头鹰 ( https://www.w3.org/2002/07/owl )

    RDF 词汇定义了帮助您(尽可能在最基本的层面上)描述个人/类实例的术语。示例:rdf:type、rdf:Property。

    使用 rdf:type 你可以描述一些资源是一个类的实例:

     <http://foo.com/anna> rdf:type <http://foo.com/teacher> 
    

    因此,RDF 词汇表中的术语针对的是类实例的基本描述和一些其他描述(如三元语句定义或谓词定义......一般来说与 RDF 概念相关的事物)。

    RDFS 词汇表有术语定义,可帮助您描述类和它们之间的关系。RDFS 词汇表不像 RDF 词汇表那样关心类(个体)的实例。示例:rdfs:subClassOf 属性可用于描述类 A 是类 B 的子类。

    RDF 和 RDFS 词汇表相互依赖。RDF 使用 RDFS 定义它的术语,而 RDFS 使用 RDF 来定义它自己的术语。

    RDF/RDFS 词汇表提供了可用于创建非常基本的资源描述的术语。如果您想要更复杂和准确的描述,您必须使用 OWL 词汇表。

OWL 词汇表附带了一组针对更详细描述的新术语。这些术语是使用 RDF/RDFS 词汇表中的术语定义的。

owl:ObjectProperty a rdfs:Class ;
                   rdfs:label "ObjectProperty" ;
                   rdfs:comment "The class of object properties." ;
                   rdfs:isDefinedBy <http://www.w3.org/2002/07/owl#> ;
                   rdfs:subClassOf rdf:Property .

owl:DatatypeProperty a rdfs:Class ;
                     rdfs:label "DatatypeProperty" ;
                     rdfs:comment "The class of data properties." ;
                     rdfs:isDefinedBy <http://www.w3.org/2002/07/owl#> ;
                     rdfs:subClassOf rdf:Property .

 owl:TransitiveProperty a rdfs:Class ;
                        rdfs:label "TransitiveProperty" ;
                        rdfs:comment "The class of transitive properties." ;
                        rdfs:isDefinedBy <http://www.w3.org/2002/07/owl#> ;
                        rdfs:subClassOf owl:ObjectProperty .

正如您在上面看到的,OWL 词汇表扩展了 rdf:Property 的概念,通过创建不那么抽象的新类型的属性,并且可以提供更准确的资源描述。

结论:

  1. RDF 是一种使用三元组来描述资源的概念或方式。
  2. RDF 三元组可以以不同的格式存储(XML/RDF、Turtle 等)
  3. RDF 的概念是所有语义网络技术和结构(如词汇表)的基础模型。
  4. RDF 也是一个词汇表,它与 RDFS 词汇表一起提供了一组术语,可用于创建资源的一般/抽象描述。
  5. OWL 是使用 RDF 和 RDFS 词汇表构建的词汇表,这些词汇表提供了用于创建更详细的资源描述的新术语。
  6. 所有语义网络词汇(RDF、RDFS、OWL 等)都是通过尊重 RDF 概念构建的。
  7. 当然,OWL 词汇表背后有各种复杂的逻辑和概念,这些逻辑和概念定义了 Web 本体语言。OWL 词汇表只是在实践中使用所有这些逻辑的一种方式。
于 2016-05-10T12:32:23.673 回答
14

首先,如前所述,owl 可以在 RDF 中序列化。

其次,OWL 通过使用形式可计算的一阶描述逻辑提供定义三元组组件的设备,为 RDF 增加了本体能力(它本身只为形式化的知识表示提供极其有限的能力)。这就是这里的海报在谈论“语义丰富”时的意思。

第三,重要的是要认识到在 OWL-Full(对于 OWL 1)中 rdfs:class 和 owl:class 是等价的,而在 OWL-DL 中,owl:class 是 rdfs:class 的子类。实际上,这意味着您可以将 OWL 本体用作 RDF 的模式(正式不需要模式)。

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

于 2010-03-31T12:29:43.860 回答
11

RDF 是一种定义三元组'subject','predicate', 'value' 的方法。例如,如果我想说,

“我叫皮埃尔”

我会写

<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/

于 2009-11-16T06:13:49.710 回答
11

RDFS 允许您通过标准化灵活的、基于三元组的格式来表达事物之间的关系,然后提供可用于表达事物的词汇表(“关键字”,例如rdf:typeor rdfs:subClassOf)。

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

第一个区别:词汇

在 RDFS 和 OWL 之间的区别中,最重要的只是OWL 提供了一个更大的词汇表,你可以用它来表达

例如,OWL 包括您在 RDFS 中的所有老朋友,例如rdfs:typerdfs:domainrdfs: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是 anrdfs:Class然后说FidoBeagle的一个实例:

Example: Beagle    rdf:Type    rdfs:Class

Example:Fido    rdf:Type    Example: Beagle

接下来,您可能会决定要谈谈比格犬,也许您想说比格犬是英格兰饲养的狗的一个例子:

Example:Beagle    rdf:Type    Example:BreedsBredInEngland

Example: BreedsBredInEngland    rdf:Type    rdfs:Class

这个例子中有趣的地方在于它Example:Beagle同时被用作一个类和一个实例BeagleFido所属的一个类别,但Beagle本身是另一个类别的成员:Things Bred in England。

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

这是 RDFS 和 OWL 之间的第二个主要区别。RDFS 实现了一个免费的、任何事情都充满狂野西部、Speak-Easies 和 Salvador Dali 的世界。OWL 的世界强加了一个更加严格的结构。

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

假设您在最后一小时花费了构建描述您的无线电制造业务的本体。午餐期间,您的任务是为您的时钟制造业务构建一个本体。今天下午,在喝了一杯好咖啡之后,你的老板现在告诉你,你必须为你的高利润时钟收音机业务构建一个本体。有没有办法轻松重复使用早上的工作?

OWL 让做这样的事情变得非常非常容易。Owl:Import是您将在时钟无线电情况下使用的,但 OWL 还为您提供了丰富多样的注释,例如owl:versionInfoowl:backwardsCompatibleWithowl:deprecatedProperty,可以很容易地使用这些注释将数据模型链接在一起,形成一个相互连贯的整体。

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

结论

OWL 为您提供了更大的词汇量,让您可以轻松说出您可能想说的有关您的数据模型的任何内容。它甚至允许您根据当今计算机的计算现实定制您所说的内容,并针对特定应用程序(例如,搜索查询)进行优化。此外,OWL 允许您使用标准注释框架轻松表达不同本体之间的关系.

与 RDFS 相比,所有这些都是优势,通常值得为熟悉它们而付出额外的努力。

资料来源:RDFS 与 OWL

于 2016-11-06T22:16:28.030 回答
8

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

简而言之,是的,您可以说 OWL 是 RDF 的扩展。

更详细地说,使用 RDF,您可以通过定义主-谓-宾三元组来描述有向图。主客体是节点,谓词是边,或者说,谓词描述了主客体之间的关系。例如:Tolkien :wrote :LordOfTheRings:LordOfTheRings :author :Tolkien等等... 关联数据系统使用这些三元组来描述知识图谱,并提供存储、查询它们的方法。现在这些都是巨大的系统,但您可以在较小的项目中使用 RDF。每个应用程序都有一种特定于领域的语言(或用 DDD 术语来说是普遍存在的语言)。您可以在本体/词汇表中描述该语言,因此您可以使用图形来描述应用程序的域模型,您可以将其可视化地展示给业务人员,讨论基于模型的业务决策,并在顶部构建应用程序那个。您可以将应用程序的词汇绑定到它返回的数据以及搜索引擎已知的词汇,例如微数据(例如,您可以使用带有 RDFA 的 HTML 来执行此操作),因此搜索引擎可以轻松找到您的应用程序,因为有关它的作用的知识将是机器可处理的。这就是语义网的工作原理。(至少我是这样想象的。)

现在要描述面向对象的应用程序,您需要类型、类、属性、实例等……使用 RDF,您只能描述对象。RDFS(RDF 模式)帮助你描述类,继承(基于对象 ofc.),但是它太宽泛了。要定义约束(例如每个中国家庭一个孩子),您需要另一个词汇。OWL(网络本体语言)完成了这项工作。OWL 是一种本体,可用于描述 Web 应用程序。它集成了 XSD simpleTypes。以越来越具体的方式描述您的 Web 应用程序的顺序也是
如此。RDF -> RDFS -> OWL -> MyWebApp

于 2014-05-26T06:24:35.437 回答
5

一张图讲一千个字!下图应该强化Christopher Gutteridge 在这个答案中所说的语义网络是“分层架构”。

在此处输入图像描述

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

于 2019-02-04T12:51:11.030 回答
4

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

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

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

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

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

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

同样,OWL 可以使用 OWL/XML 进行序列化,或者(很抱歉)它可以表示为 RDF,而 RDF 本身通常被序列化为 XML。

于 2010-09-22T05:15:53.863 回答
3

资源描述框架(RDF)是一种强大的形式化知识表示语言和语义网的基本标准。它有自己定义核心概念和关系的词汇表(例如,rdf:type 对应于 isA 关系),以及以主体-谓词-客体(资源-属性-值)的形式启用机器可解释语句的数据模型三元组,称为 RDF 三元组,例如 picture-depicts-book。使用创建受控词汇表和基本本体所需的概念对 RDF 词汇表进行扩展称为 RDF Schema 或 RDF 词汇描述语言 (RDFS)。RDFS 可以编写关于类和资源的语句,并表达分类结构,例如通过超类-子类关系。

复杂的知识领域需要比 RDFS 中可用的更多的功能,这导致了OWL的引入。OWL 支持类之间的关系(联合、交集、不相交、等价)、属性基数约束(最小、最大、精确数字,例如,每个人只有一个父亲)、丰富的属性类型、属性的特征和特殊属性(传递、对称、泛函、反泛函,例如 A ex:hasAncestor B 和 B ex:hasAncestor C 暗示 A ex:hasAncestor C),指定给定属性是特定类实例的唯一键,以及域和范围限制对于属性。

于 2017-11-17T02:50:21.190 回答
3

基本语义网络堆栈已经在这个线程中解释了很多。我想专注于最初的问题并将 RDF 与 OWL 进行比较。

  • OWL 是 RDF 和 RDF-S 的超集(在顶部)
  • OWL 允许有效地使用 RDF 和 RDF-S
  • OWL 有一些扩展的词汇
    • 类和个人(“实例”)
    • 属性和数据类型(“谓词”)
  • 正确推理和推理需要 OWL
  • OWL 提供三种方言 lite、描述逻辑和完整

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

一些示例将表明它实际上适用于 OWL - 这些摘自我在 2015 年西班牙马略卡岛 TYPO3camp 上关于语义网络基础的演讲。

规则等价物

Spaniard: Person and (inhabitantOf some SpanishCity)

这意味着 aSpaniard必须是 a Person(因此继承了推理部分的所有属性)并且必须存在于至少一个(或多个)SpanishCity中。

属性的含义

<Palma isPartOf Mallorca>
<Mallorca contains Palma>

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

  • 对称的
  • 及物的
  • 不相交的
  • ...

属性的基数

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

这定义了每个Thing(在这种情况下很可能是 a Human)恰好有两个父母 - 基数被分配给hasParent属性。

  • 最低限度
  • 最大
  • 精确的
于 2016-10-14T20:58:14.257 回答