Jena學習筆記

        Jena是Java語言編寫的操作RDF文檔的接口。現在我主要是用它將protégé生成的本體模型存入數據庫,並且今後可能同樣使用Jena來修改數據庫中的本體數據。

關於Jena的學習方法,我從網上搜了一些,覺得用處不大。探索發現:學習Jena自己的文檔纔是王道!(http://jena.sourceforge.net/tutorial/RDF_API/index.html

        下面簡要總結一下我的學習所得。

(一)RDF的組成

        我們通常會畫一個類似如下圖的本體模型(截圖來自上面提到的網址):


        上圖我們可以稱之爲RDF模型。關係數據庫存儲RDF數據的一般模式是三元組(triple),也稱爲RDF描述(statement)。這個三元組包括:主體(subject)、謂詞(predicate)、客體(object)。主體是資源(resource)。謂詞就相當於關係(property),也就是圖中帶箭頭的連線。客體可能是資源也可能是文字(literal),如圖,當客體還有子節點時,它是資源,而當客體是葉子節點時,它是文字。

        這裏我們要注意:RDF模型是statement的集合,因此其中不允許包含重複項。

(二)Write RDF

        在之前的文章中我提到過,RDF的鼻祖是XML。換句話說,RDF是用XML語法來描述的。具體說來,Jena中提供有三種方式來將RDF模型轉化爲XML語言的描述:

        (1)默認方式——dumb:

        在這種方式下,是不允許空白節點存在的。注意截圖中的nodeID,其實它就是我們上圖模型中的那個空白節點。但因爲該方式不允許存在空白節點,所以Jena才爲它添加了一個相對地址的URI。


        (2)PrettyWriter(RDF/XML-ABBREV):

        該方式採用縮寫語法來使得表示空白節點成爲可能。不過對於非常大的模型而言,該方式效率較低。


        (3)N-TRIPLE:

        該格式同時保證了效率以及空白節點的表示兩大要求。


(三)Read RDF


(四)URI的縮寫

        RDF文檔只支持完整的URI,但爲了方便,Jena引入了命名空間來進行縮寫。下面是未縮寫前和縮寫後的對比:

        (1)未縮寫:


        (2)縮寫後:


        (3)兩個都縮寫後:


(五)查詢模型

        其查詢能力不如RDQL,但仍可簡單返回對應資源。

(六)操作模型

        Jena提供了三個方法操作模型,分別是並、交、差,對應語法如下:

        (1)並:Model model = model1.union(model2);

        (2)交:Model model = model1.intersection(model2);

        (3)差:Model model = model1.difference(model2);

(七)Container

        RDF定義了一類特殊的資源用來代表事物的集合,這就是Container。Container的成員包括literals和resources兩種。而Container有三種形式:

        (1)BAG:無序集合;

        (2)ALT:無序,用於表示可選項,它的rdf:_1 property代表默認選項;

        (3)SEQ:有序集合。


        這是我的初步學習筆記,以後有更新的內容再分享上來。更多內容歡迎大家訪問我的個人博客:溫馨咖啡小屋http://warmcafe.info


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章