本節書摘來自華章出版社《語義網基礎教程(原書第3版)》一 書中的第2章,第2.3節,作者:(希)grigoris antoniou(荷)paul groth(荷)frank van harmelen(荷)rinke hoekstra ,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。
我們已經看到了一種rdf文法,即圖形化的文法。但是這種文法既不是機器可解釋的,也不是标準化的。本節介紹一種标準的機器可解釋的文法,稱為turtle,另外還将簡要介紹一些其他文法。
turtle(terse rdf triple language)是一種基于文本的rdf文法。turtle文本檔案使用的字尾名是“.ttl”。我們之前已經見到如何使用turtle寫一個聲明。下面是一個例子:

url包含在尖括号中。一個聲明的主語、屬性和賓語依次出現,由句号結尾。事實上,我們能夠僅使用這種方法來編寫整個rdf圖。
文字
到目前為止,我們已經定義了将資源連結在一起的聲明。正如之前讨論的那樣,我們也能在rdf中引入文字,即原子值。在turtle中,我們簡單地将值寫在引号中,并附上值的資料類型。資料類型告訴我們是否應該将一個值解釋為字元串、日期、整型數,還是其他類型。資料類型也使用url表達。實踐中建議使用xml模式定義的資料類型。當使用這些資料類型時,值必須服從xml模式定義。如果一個文字之後沒有指定資料類型,則假設資料類型是字元型。下面是一些常見的資料類型以及它們在turtle中的形式:
假設我們想要向圖中添加baron way apartment有3個房間。可以将下面turtle中的聲明添加到圖中。
上述例子相對而言不容易使用。為使其更加清晰,turtle提供了一些構造子來使書寫變得更加容易。
縮寫
當我們定義詞彙表時,我們經常在相同的uri上定義。在例子中,資源baron way apartment和baron way building都定義在了www.semanticwebprimer.org/ontology/apartments.ttl這個url下。這個url定義了這些資源的命名空間(namespace)。turtle使用了這個慣例,允許url被縮寫。它引入了@prefix文法來定義特定命名空間的替代形式。例如,可以用swp作為www.semanticwebprimer.org/ontology/apartment.ttl的替代形式。這種替代稱為限定名(qualified name)。以下使用字首重寫了該例子。
注意,使用限定名來指稱資源時,資源兩側的尖括号被去掉了。其次,我們能夠混用這些限定名與正常url并比對它們。
turtle還允許在我們重複使用某些主語的時候不需要再重複書寫。在上面的例子中,swp:baronwayapartment被用作兩個三元組的主語。這可以通過在一個聲明的結尾處使用一個分号來使書寫更加緊湊。例如:
如果主語和謂語都被重複使用,我們可以在聲明的結尾處使用一個逗号。例如,如果希望擴充該例子,說明baron way building不僅位于amsterdam還位于netherlands,可以在turtle中這樣寫:
最後,turtle允許我們簡寫常見的資料類型。例如,數字可以不使用引号來寫。如果數字包含一個小數點(例如14.3),那麼它們就被解釋為小數。如果它們不包含一個小數點(例如1),那麼它們就被解釋成整型數。這更加簡化了該例子:
命名圖
在這個方法中,位于花括号中但是之前沒有url的聲明不是一個特定圖的一部分。它稱為預設圖。
除了turtle之外,還存在其他一些可用于編寫rdf的文法。其中有兩個标準的文法:rdf/xml和rdfa。
rdf/xml
rdf/xml是rdf在xml語言中的編碼。它允許rdf被已有xml處理工具使用。起初,rdf/xml是rdf的唯一文法。但是,由于turtle通常更容易閱讀,是以作為一種額外标準被采納。下面展示了一個rdf/xml。主語在一個rdf:description元素中通過rdf:about定義(包含在尖括号内)。與主語關聯的謂語和賓語也包含在rdf:description元素中。命名空間可以通過xml命名空間結構(xmlns:)被使用。所有的rdf/xml必須被包含在一個rdf:rdf元素中。
rdfa
rdf的一個用例是描述或标注html網頁的内容。為了使其更加簡單,引入rdfa文法來幫助實作這個用例。rdfa在html标簽的屬性(attribute)中嵌入rdf。我們使用baron way apartment的一個廣告作為例子。
這個标注将生成和之前turtle表示的完全一樣的rdf。因為rdf被編碼在諸如span、paragraph和link之類的标簽中,是以在顯示html頁面時不會被浏覽器解析。和rdf/xml類似,命名空間使用xmlns聲明來編碼。一些情況下,必須使用方括号來告訴解析器我們正在使用字首。主語通過about屬性(attribute)來辨別。屬性通過rel或property屬性(attribute)來辨別。當一個聲明的賓語是一個資源時使用rel,而當一個聲明的賓語是文字時使用property。謂語和主語通過使用html層次結構來關聯。
上述每種rdf文法适用于不同的場景。然而必須意識到盡管可能會使用不同的文法,但它們的底層資料模型和語義是相同的。迄今為止我們已經讨論了如何通過url辨別來編寫事物的聲明。但是這些聲明的含義是什麼?一個計算機應該如何解釋這些生成的聲明?這些問題将在下一節介紹rdf的模式語言時讨論。