2013-02-25 80 views
2

將RDF-XML讀入Jena模型時遇到問題。我用帶有片段的Jena RDF資源URI

FileManager fileManager = FileManager.get(); 
Model model = fileManager.loadModel(url); 

資源的URI一樣

http://kulturarvsdata.se/resurser/aukt/geo/county#01

轉出像

http://kulturarvsdata.se/resurser/aukt/geo/01

在耶拿模型的資源

,即URI片段部分被剝離。

我試圖ecplicitly提供基URI耶拿:

Model model = fileManager.loadModel(url, "http://kulturarvsdata.se/resurser/aukt/geo/county#", "RDF/XML"); 

,但沒什麼區別。

我誤解了一些東西,還是有辦法說服Jena來保存URI片段嗎?

回答

3

我認爲你的問題是基礎URI不能像turtle和SPARQL中的前綴一樣工作。

http://kulturarvsdata.se/resurser/aukt/geo/county開始:

<rdf:RDF xml:base="http://kulturarvsdata.se/resurser/aukt/geo/county#"> 
    ... 

然後,您有一個資源:

<County rdf:about="01">... 

rdf:about URI相對於所提供的基礎http://kulturarvsdata.se/resurser/aukt/geo/county#解決。注意我說'已解決'而不是'串聯',這是前綴所做的事情。解決01相對於基地給出http://kulturarvsdata.se/resurser/aukt/geo/01

底部末端的片段(#)在實踐中沒有做任何事情。你需要做的是將其替換您的abouts:

<County rdf:about="#01">... 

(基本上你不能用文檔庫,使各環節的內部內部鏈接必須使用片段。)

+0

謝謝!這很有道理。我會將其傳遞給管理數據集的人員。 – 2013-02-25 16:34:02

+0

小的更新,我下載了資源並玩了一遍,這個建議使用了rdf:about的資源。有趣的是,使用rdf:ID的人需要原始設置,並在xml:base中使用片段標記。我認爲有些東西被埋在規範中,這就解釋了爲什麼... – 2013-02-27 08:45:46

+1

哦,是的,rdf:ID將起作用(請參閱http://stackoverflow.com/questions/7118326/differences-between-rdfresource-rdfabout-and-rdfid/ 7119042#7119042)。但是,您不需要基礎片段。 – user205512 2013-02-27 08:55:08