zoukankan      html  css  js  c++  java
  • RDF/RDFS/OWL

    RDF(Resource Description Framework 资源描述框架)

    • 知识总是以三元组形式出现: (subject, predicate, object)
      (主,谓,宾)
    • 资源和属性用URI来定义(http://demo.com/KG
    • 属性值可以一个值,或者一个资源(URI)
    • 可用命名空间替代uri来简化
    <RDF>
      <Description about="https://www.runoob.com//rdf">
        <author>Jan Egil Refsnes</author>
        <homepage>https://www.runoob.com/</homepage>
      </Description>
    </RDF>
    
    <?xml version="1.0"?>
    
    <rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:cd="http://www.recshop.fake/cd#">
    
    <rdf:Description
    rdf:about="http://www.recshop.fake/cd/Empire Burlesque">
      <cd:artist>Bob Dylan</cd:artist>
      <cd:country>USA</cd:country>
      <cd:company>Columbia</cd:company>
      <cd:price>10.90</cd:price>
      <cd:year>1985</cd:year>
    </rdf:Description>
    
    </rdf:RDF>
    

    RDF序列化的方式主要有:RDF/XML,N-Triples,Turtle,RDFa,JSON-LD

    N-Triples

    <http://www.kg.com/person/1> <http://www.kg.com/ontology/chineseName> "罗纳尔多·路易斯·纳萨里奥·德·利马"^^string.
    <http://www.kg.com/person/1> <http://www.kg.com/ontology/career> "足球运动员"^^string.
    <http://www.kg.com/person/1> <http://www.kg.com/ontology/fullName> "Ronaldo Luís Nazário de Lima"^^string.
    <http://www.kg.com/person/1> <http://www.kg.com/ontology/birthDate> "1976-09-18"^^date.
    <http://www.kg.com/person/1> <http://www.kg.com/ontology/height> "180"^^int.
    <http://www.kg.com/person/1> <http://www.kg.com/ontology/weight> "98"^^int.
    <http://www.kg.com/person/1> <http://www.kg.com/ontology/nationality> "巴西"^^string.
    <http://www.kg.com/person/1> <http://www.kg.com/ontology/hasBirthPlace> <http://www.kg.com/place/10086>.
    <http://www.kg.com/place/10086> <http://www.kg.com/ontology/address> "里约热内卢"^^string.
    <http://www.kg.com/place/10086> <http://www.kg.com/ontology/coordinate> "-22.908333, -43.196389"^^string.
    

    Turtle

    @prefix person: <http://www.kg.com/person/> .
    @prefix place: <http://www.kg.com/place/> .
    @prefix : <http://www.kg.com/ontology/> .
    
    person:1 :chineseName "罗纳尔多·路易斯·纳萨里奥·德·利马"^^string.
    person:1 :career "足球运动员"^^string.
    person:1 :fullName "Ronaldo Luís Nazário de Lima"^^string.
    person:1 :birthDate "1976-09-18"^^date.
    person:1 :height "180"^^int. 
    person:1 :weight "98"^^int.
    person:1 :nationality "巴西"^^string. 
    person:1 :hasBirthPlace place:10086.
    place:10086 :address "里约热内卢"^^string.
    place:10086 :coordinate "-22.908333, -43.196389"^^string.
    

    Trutle简化:

    @prefix person: <http://www.kg.com/person/> .
    @prefix place: <http://www.kg.com/place/> .
    @prefix : <http://www.kg.com/ontology/> .
    
    person:1 :chineseName "罗纳尔多·路易斯·纳萨里奥·德·利马"^^string;
             :career "足球运动员"^^string;
             :fullName "Ronaldo Luís Nazário de Lima"^^string;
             :birthDate "1976-09-18"^^date;
             :height "180"^^int;
             :weight "98"^^int;
             :nationality "巴西"^^string; 
             :hasBirthPlace place:10086.
    place:10086 :address "里约热内卢"^^string;
                :coordinate "-22.908333, -43.196389"^^string.
    

    RDFS(Resource Description Framework Schema)

    是RDF的扩展,表现形式上就是RDF。常用的方式是RDF/XML,Turtle

    @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
    @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
    @prefix : <http://www.kg.com/ontology/> .
    
    ### 这里我们用词汇rdfs:Class定义了“人”和“地点”这两个类。
    :Person rdf:type rdfs:Class.
    :Place rdf:type rdfs:Class.
    
    ### rdfs当中不区分数据属性和对象属性,词汇rdf:Property定义了属性,即RDF的“边”。
    :chineseName rdf:type rdf:Property;
            rdfs:domain :Person;
            rdfs:range xsd:string .
    
    :career rdf:type rdf:Property;
            rdfs:domain :Person;
            rdfs:range xsd:string .
    
    

    常见属性:

    • rdfs:Class 用于定义类。
    • rdfs:domain 用于表示该属性属于哪个类别。
    • rdfs:range 用于描述该属性的取值类型。
    • rdfs:subClassOf 用于描述该类的父类。比如,我们可以定义一个运动员类,声明该类是人的子类。
    • rdfs:subProperty. 用于描述该属性的父属性。比如,我们可以定义一个名称属性,声明中文名称和全名是名称的子类。

    借用一下知乎中的图(图片来自文章:https://zhuanlan.zhihu.com/p/32122644
    aaa

    OWL(Web Ontology Language)

    可用于自动推理

    • 数据属性(DatatypeProperty): 指向某个值
    • 对象属性(ObjectProperty): 指向另一个实体
    @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
    @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
    @prefix : <http://www.kg.com/ontology/> .
    @prefix owl: <http://www.w3.org/2002/07/owl#> .
    
    ### 这里我们用词汇owl:Class定义了“人”和“地点”这两个类。
    :Person rdf:type owl:Class.
    :Place rdf:type owl:Class.
    
    ### owl区分数据属性和对象属性(对象属性表示实体和实体之间的关系)。词汇owl:DatatypeProperty定义了数据属性,owl:ObjectProperty定义了对象属性。
    :chineseName rdf:type owl:DatatypeProperty;
            rdfs:domain :Person;
            rdfs:range xsd:string .
    
    :hasBirthPlace rdf:type owl:ObjectProperty;
            rdfs:domain :Person;
            rdfs:range :Place .
    

    aaa

    描述属性特征的词汇

    • owl:TransitiveProperty : 属性具有传递性质。(若A位于B,B位于C,那么A肯定位于C)
    • owl:SymmetricProperty : 属性具有对称性。(若A认识B,那么B肯定认识A)。
    • owl:FunctionalProperty : 该属性取值的唯一性。(我们定义“母亲”是具有唯一性的属性,若A的母亲是B,在其他地方我们得知A的母亲是C,那么B和C指的是同一个人)。
    • owl:inverseOf : 定义某个属性的相反关系。(A是B的父母,那么B肯定是A的子女)。

    本体映射词汇(Ontology Mapping)

    • owl:equivalentClass : 表示某个类和另一个类是相同的。
    • owl:equivalentProperty : 表示某个属性和另一个属性是相同的。
    • owl:sameAs : 表示两个实体是同一个实体。

    owl补充

    • owl:oneOf
    • owl:disjointWith :两个类不相交
    • unionOf : 并
    • minCadinality :
    • maxCadinality
    • InverseFunctionalProperty
    • hasValue

    总结

    rdfs的常见属性:

    • rdfs:Class 用于定义类。
    • rdfs:domain 用于表示该属性属于哪个类别。
    • rdfs:range 用于描述该属性的取值类型。
    • rdfs:subClassOf 用于描述该类的父类。比如,我们可以定义一个运动员类,声明该类是人的子类。
    • rdfs:subProperty. 用于描述该属性的父属性。比如,我们可以定义一个名称属性,声明中文名称和全名是名称的子类。

    owl的常见属性:
    描述属性特征的词汇

    • owl:TransitiveProperty : 属性具有传递性质。(若A位于B,B位于C,那么A肯定位于C)
    • owl:SymmetricProperty : 属性具有对称性。(若A认识B,那么B肯定认识A)。
    • owl:FunctionalProperty : 该属性取值的唯一性。(我们定义“母亲”是具有唯一性的属性,若A的母亲是B,在其他地方我们得知A的母亲是C,那么B和C指的是同一个人)。
    • owl:inverseOf : 定义某个属性的相反关系。(A是B的父母,那么B肯定是A的子女)。

    本体映射词汇(Ontology Mapping)

    • owl:equivalentClass : 表示某个类和另一个类是相同的。
    • owl:equivalentProperty : 表示某个属性和另一个属性是相同的。
    • owl:sameAs : 表示两个实体是同一个实体。

    • rdf其实描述了数据,但是数据之间的关系不够明确;我们可以自定义一些关系,但是关系与关系之间也是有联系的,这在rdf中并无法表示出来
    • rdfs/owl是在rdf的基础上增加的约束;“边”不再是rdf中的直接定义,而也是需要用rdfs:domain, rdfs:range来描述。在拥有更清晰的语义的情况下,就可以进行推理

    参考文章: https://zhuanlan.zhihu.com/p/32122644

  • 相关阅读:
    关于vim和emacs两个编辑器的想法
    人工智能简史 --- 笔记
    快速软件开发-书摘
    golang v 1.13 使用goproxy
    设计原本- the design of design 笔记
    access和trunk端口和hybird端口的区别
    子网划分及子网掩码计算方法
    ARM9裸板学习--win10下TQ2440裸板烧录(需要串口线和网线)
    嵌入式Linux学习2--Ubuntu18.04中C、C++环境的搭建
    嵌入式Linux学习1--Ubuntu18.04.3安装
  • 原文地址:https://www.cnblogs.com/twilight0402/p/13384499.html
Copyright © 2011-2022 走看看