[NLP] 語義網絡與知識圖譜入門(一)


語義網絡與知識圖譜入門(一)

RDF/XML

本體:一種形式化的對於共享概念體系明確而又詳細的說明。就是指一種抽象的模型,可以用來描述對象類型、屬性以及關系類型所構成的世界。

RDF/XML主要講的就是如何用XML的方式來表示RDF的圖。

橢圓表示節點,矩形表示文本,弧表示謂語。

節點描述

<rdf:Description rdf:about="A"></rdf:Description>

一個節點本身需要被rdf:Description來定義,通過rdf:about來說明資源uri。

前面rdf是空間名字,固有空間默認為rdf空間。

屬性描述

如何描述A的屬性d的值為D呢?

屬性描述
<rdf:Description rdf:about="A">
    <d>D</d>
</rdf:Description>

簡寫
<rdf:Description rdf:about="A" d="D"></rdf:Description>

路徑描述

如何描述A到B的路徑呢?

可以通過定義rdf:nodeId的方式指定唯一的nodeId,也可以通過rdf:parseType為Resouce來指定空節點。

屬性描述,注意這里的B也是個節點,所以也需要Description
<rdf:Description rdf:about="A">
    <a rdf:nodeId="abc"></a>
</rdf:Description>
<rdf:Description rdf:nodeId="abc">
    <b>
    	<rdf:Description rdf:about="B" ></rdf:Description>
    </b>
</rdf:Description>

不單獨寫空節點,即用resource
<rdf:Description rdf:about="A">
    <a rdf:parseType="Resource">
        <b>
        	<rdf:Description rdf:about="B" ></rdf:Description>
        </b>
    </a>
</rdf:Description>

文本表示

<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:ex="http://purl.org/dc/elements/1.1/">
    <rdf:Description rdf:about="http://example.com">
    	<ex:prop rdf:parseType="Literal" xmlns:a="http://example.org/a#">
            123
        </ex:prop>
    </rdf:Description>
</rdf:RDF>

xmlns即xml namespace,定義一個命令空間。

使用語法: xmlns:namespace-prefix="namespaceURI"。

這里定義一個名字為a的命令空間

可以看到解析后的結果為:

Number Subject Predicate Object
1 http://example.com](http://example.com/) http://purl.org/dc/elements/1.1/prop) "123"^^http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral

解析網址:https://www.w3.org/RDF/Validator/rdfval

通過解析可以看出來將prop指向的內容解析成了文本類型,即通過指定rdf:parseType="Literal"來實現。謂詞rdf:parseType="Literal",指明節點的內容是普通文本,解釋器不需要對其進行解釋。

數據類型

可以使用rdf:datatype指定文本的數據類型

<rdf:RDF>
    <rdf:Description rdf:about="http://example.com">
        <a rdf:datatype="http://www.w3.org/2001/XMLSchema#int">
        123
        </a>
    </rdf:Description>
</rdf:RDF>

同樣的,也有string,date,decimal等數據類型可以在上面的datatype中指定。

RDF Schema (RDFS)

RDFS的全稱為RDF Schema,RDF Schema 中的類與面向對象編程語言中的類非常相似。這就使得資源能夠作為類的實例和類的子類來被定義。

<rdf:RDF
xmlns:rdf= "http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xml:base=  "http://www.animals.fake/animals#">

<rdf:Description rdf:ID="animal">
  <rdf:type 
   rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
</rdf:Description>

<rdf:Description rdf:ID="horse">
  <rdf:type
   rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
  <rdfs:subClassOf rdf:resource="#animal"/>
</rdf:Description>

</rdf:RDF>

rdf:type
用來表示主語是謂語的一個實例,主語是一個資源,謂語是一個類 ,上面例子中說明animal是class的實例,horse也是class的實例。

rdfs:subClassOf

用來表示主語是謂語的子類,主語和謂語都是一個類 。上面例子中表明horse是animal的子類。

rdfs:subPropertyOf

用來表示主語是謂語的子屬性,主語和謂語都是屬性

rdfs:domain

用來表示屬性的定義域

rdfs:range

用來表示值域

另外,一切所有皆資源(resource):所有類(class)都是資源,所有屬性(property)都是資源,所有literal都是資源。

容器

Open Lists

open lists為課題添加新元素的容器。

rdf:Seq表示一個規定為有序的值的列表(比如一個字母順序的排序),可以包含重復值。

rdf:Bag表示一個規定為無序的值的列表,可以包含重復值。

rdf:Alt表示一個可替換的值的列表(用戶僅可選擇這些值的其中之一)。

<rdf:RDF>
    <rdf:Description rdf:about="http://a.com">
        <a>
        	<rdf:Alt>
                 <rdf:li>CD</rdf:li>
                 <rdf:li>Record</rdf:li>
                 <rdf:li>Tape</rdf:li>
           </rdf:Alt>
        </a>
    </rdf:Description>
</rdf:RDF>

rdf:li,解釋器在解釋時,將自動生成編號。

Closed Lists

closed lists為不可以添加元素的容器,其成為collections。通過rdf:parseType="collections"可以將賓語視為closed lists。

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
xmlns:cd="http://recshop.fake/cd#">

<rdf:Description
rdf:about="http://recshop.fake/cd/Beatles">
<cd:artist rdf:parseType="Collection">
<rdf:Description rdf:about="http://recshop.fake/cd/Beatles/George"/>
<rdf:Description rdf:about="http://recshop.fake/cd/Beatles/John"/>
<rdf:Description rdf:about="http://recshop.fake/cd/Beatles/Paul"/>
<rdf:Description rdf:about="http://recshop.fake/cd/Beatles/Ringo"/>
</cd:artist>
</rdf:Description>

</rdf:RDF>

Turtle語法

turtle用三元組表示,每個句子后面一個.表示句子結束。

前綴

@prefix book: <http://aa.com> .
@prefix ex: <http://axx.com> .

通過@prefix來指定前綴,這樣就可以在后面用這個前綴了。

book:uri ex:a "aaa".


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM