RDF和OWL之间有什么区别?

RDF和OWL之间有什么区别?,rdf,semantic-web,owl,Rdf,Semantic Web,Owl,我试图掌握语义网的概念。我发现很难理解RDF和OWL之间到底有什么区别。OWL是RDF的扩展还是这两种技术完全不同 RDF是一种定义三元组的方法,“主语”、“谓语”、“值”。 比如说,如果我想说 “我叫皮埃尔” 我会写 <mail:me@where.com> <foaf:name> "Pierre" RDF使用OWL来定义这些类型的语句 问这类问题的另一个地方:简而言之: RDF定义了如何写东西 OWL定义要写的内容 正如前面的海报所写,RDF是一个规范,它告诉您如

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

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

“我叫皮埃尔”

我会写

<mail:me@where.com> <foaf:name> "Pierre"
RDF使用OWL来定义这些类型的语句

问这类问题的另一个地方:简而言之:

  • RDF定义了如何写东西
  • OWL定义要写的内容
正如前面的海报所写,RDF是一个规范,它告诉您如何定义三元组

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

| subject | predicate | object |
|---------|-----------|--------|
| Alex    | Eats      | Apples |
| Apples  | Eats      | Apples |
| Apples  | Apples    | Apples |
这些三元组构成有效的RDF文档

但是,从语义上讲,您知道这些语句是不正确的,RDF不能帮助您验证您所写的内容

这不是有效的本体

OWL规范准确地定义了使用RDF可以编写的内容,以获得有效的本体

本体可以有几个属性


这就是为什么OWL(1版)定义了几个版本,如OWLDL、OWLLite、OWLFull。

语义网是分层的。这是我认为您感兴趣的内容的简要总结

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

三元组和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(RDFSchema)定义了一些类,这些类表示主语、对象、谓词等的概念。这意味着您可以开始对事物的类和关系的类型进行说明。在最简单的层面上,你可以陈述一些事情,比如一个人和另一个人之间的关系。它还允许您在人类可读的文本中描述关系或类的含义。这是一个模式。它告诉您各种类和关系的合法用法。它还用于指示类或属性是更一般类型的子类型。例如,“HumanParent”是“Person”的一个子类。“爱”是“知道”的一个子类

RDF序列

Subject - Predicate - Object
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”。

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

其次,OWL为RDF添加了本体论功能(RDF本身仅为形式化knownledge表示提供了极其有限的功能),它提供了使用形式化可计算一阶描述逻辑定义三元组组件的设备。这就是这里的海报所说的“语义丰富性”

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


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

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

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

  • 一个主题,三元组的内容,id,数据库主键-一个URI;及
  • 谓词,
    @prefix : <http://www.example.org/> .
    :john    rdf:type           :Man .
    :john    :livesIn  "New-York" .
    :livesIn    rdf:type    rdf:Property .
    
    @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 .
    
    @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 .
    
     <http://foo.com/anna> rdf:type <http://foo.com/teacher> 
    
    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 .
    
    Spaniard: Person and (inhabitantOf some SpanishCity)
    
    <Palma isPartOf Mallorca>
    <Mallorca contains Palma>
    
    <:hasParent owl:cardinality “2“^^xsd:integer>
    
    Example:Mother    owl:unionOf     (Example:Parent, Example:Woman)
    
    AcmeCompany:JohnSmith  owl:sameAs    PersonalDatabase:JohnQSmith
    
    Example:MyState     owl:allValuesFrom     (State:NewYork, State:California, …)
    
    Example: Beagle    rdf:Type    rdfs:Class
    
    Example:Fido    rdf:Type    Example: Beagle
    
    Example:Beagle    rdf:Type    Example:BreedsBredInEngland
    
    Example: BreedsBredInEngland    rdf:Type    rdfs:Class