RDF和OWL有什么区别?

问题描述 投票:182回答:14

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

rdf semantic-web owl
14个回答
262
投票

语义网分层次存在。这是我认为你感兴趣的那些的快速总结。

更新:请注意,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”的子类。 “爱”是“知识”的子类。

RDF序列化

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

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

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

XSD

XSD是一个命名空间,主要用于描述属性类型,如日期,整数等。它通常在RDF数据中看到,用于识别文字的特定类型。它也用于XML模式,这是一个略有不同的鱼。

猫头鹰

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

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


4
投票

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

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

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

OWL属于语义Web,因为Schema属于W3C文档对象模型。它记录了各种URI的含义,并指明了它们如何以正式方式使用,可由机器检查。对于应用于它的OWL,语义网可能是有效的,也可能是无效的,就像文档相对于模式可能有效或可能无效一样。

RDF是语义网,因为XML是DOM - 它是一组三元组的序列化。

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

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


3
投票

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

  • OWL是RDF和RDF-S的超级套装(在顶部)
  • OWL允许有效地使用RDF和RDF-S
  • OWL有一些扩展的词汇量 课程和个人(“实例”) 属性和数据类型(“谓词”)
  • 正确的推理和推理需要OWL
  • OWL有三种方言精简版,描述逻辑和完整版

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

一些例子将显示实际上与OWL一起使用 - 这些是从2015年在西班牙TYPO3camp Mallorca的talk about the basics of semantic web拍摄的。

规则的等价物

Spaniard: Person and (inhabitantOf some SpanishCity)

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

属性的含义

<Palma isPartOf Mallorca>
<Mallorca contains Palma>

该示例显示了将inverseOf应用于属性isPartOfcontains的结果。

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

属性的基数

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

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

  • 最低限度
  • 最大值
  • 精确

2
投票

资源描述框架(RDF)是一种强大的形式知识表示语言和语义Web的基本标准。它有自己的词汇表来定义核心概念和关系(例如,rdf:type对应于isA关系),以及一个数据模型,它以subject-predicate-object(resource-property-value)的形式启用机器可解释的语句三倍,称为RDF三元组,如图片描绘书。 RDF词汇表的扩展与创建受控词汇表和基本本体所需的概念称为RDF Schema或RDF词汇描述语言(RDFS)。 RDFS使编写有关类和资源的语句成为可能,并表达分类结构,例如通过超类 - 子类关系。

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


2
投票

一张图片说千言万语!下面的图表应该强化Christopher Gutteridge 在这个answer中所说的语义网是一个“分层架构”。

enter image description here

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


2
投票

最好的答案是从詹姆斯亨德勒(James Hendler)的语义网本身“工作本体论者的语义网”开拓者之一阅读这本书。如果您正在寻找快速速成课程。检查这个udemy课程:

https://www.udemy.com/semantic-web/?couponCode=HALFOFF


76
投票

简而言之:

  • 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。


31
投票

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:rangerdfs:domain等结构。理想情况下,推理者可以理解RDFS语义并根据关系扩展三元组的数量:例如,如果你有三元组John a ManMan rdfs:subClassOf Human那么你应该生成三元组John a Human。请注意,单独使用RDF无法做到这一点。使用SPARQL查询RDFS数据。在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 .

14
投票

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

其次,OWL通过提供使用正式可计算的一阶描述逻辑来定义三元组件的装置,为RDF增加本体能力(RDF本身仅提供非常有限的正式已知表示能力)。这就是当他们谈论“语义丰富”时海报的意思。

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

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


9
投票

我个人发现这个幻灯片非常有用且可以理解:http://www.slideshare.net/rlovinger/rdf-and-owl


8
投票

当您使用术语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#) OWL(https://www.w3.org/2002/07/owl) RDF vocubalary定义了一些术语,可帮助您(尽可能在最基本的级别)描述类的个体/实例。示例: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的概念是所有语义Web技术和结构(如词汇表)的基本模型。
  4. RDF也是一个词汇表,与RDFS词汇表一起提供了一组术语,可用于创建资源的一般/抽象描述。
  5. OWL是使用RDF和RDFS词汇表构建的词汇表,为创建更详细的资源描述提供了新术语。
  6. 所有语义Web词汇表(RDF,RDFS,OWL等)都是通过尊重RDF概念构建的。
  7. 当然,OWL词汇表背后有各种复杂的逻辑和概念,它们定义了Web本体语言。 OWL词汇表只是在实践中使用所有逻辑的一种方式。

8
投票

RDF是一种定义三重“主体”,“谓词”,“价值”的方法。例如,如果我想说,

“我叫皮埃尔”

我会写的

<mail:[email protected]> <foaf:name> "Pierre"

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

您使用C ++,Java等...来定义类,子类,字段等...

class Person
{
    String email_as_id;
    String name;
}

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

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


7
投票

RDFS允许您通过标准化灵活的三重格式表达事物之间的关系,然后提供词汇表(“关键词”,如rdf:typerdfs:subClassOf),可用于说出事情。

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

1st Difference: Vocabulary

在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提供了许多新的,复杂的词汇表,可用于数据建模和推理,这些都可以获得自己的教训!

2nd Difference: Rigidity

另一个主要区别是,与RDFS不同,OWL不仅告诉您如何使用某些词汇,它实际上告诉您如何不使用它。相比之下,RDFS为您提供了一个世界上你可以添加几乎任何你想要的三倍的世界。

例如,在RDFS中,您感觉到的任何内容都可以是rdfs:Class的实例。你可能会决定说Beagle是一个rdfs:Class,然后说Fido是Beagle的一个例子:

Example: Beagle    rdf:Type    rdfs:Class

Example:Fido    rdf:Type    Example: Beagle

接下来,您可能会决定想要谈论小猎犬的事情,或许您想说Beagle是英格兰养殖的狗的一个例子:

Example:Beagle    rdf:Type    Example:BreedsBredInEngland

Example: BreedsBredInEngland    rdf:Type    rdfs:Class

这个例子中有趣的是Example:Beagle被用作类和实例。 Beagle是Fido所属的一个类,但Beagle本身就是另一个类的成员:在英格兰培育的东西。

在RDFS中,所有这些都是完全合法的,因为RDFS并不真正限制您可以和不能插入哪些语句。相比之下,在OWL中,或者至少在一些OWL中,上述陈述实际上是不合法的:你根本不允许说某事既可以是阶级也可以是实例。

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

3rd Difference: Annotations, the meta-meta-data

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

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

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

Conclusion

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

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

资料来源:RDFS vs. OWL


6
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.