2011-03-25 79 views
2

我是Jena的新手,現在我遇到了以下問題。 基本上我需要創建具有嵌套的元素,例如RDF:使用Jena在RDF文件中創建嵌套標記

<rdf:description about="http://www.acme.com"> 
    <dc:country> 
     <dc:capital>London</dc:capital> 
     <dc:language>English</dc:language> 
    <dc:country> 
</rdf:description> 

這也許是微不足道的,但我沒能做到這一點。我已經閱讀了幾篇教程,但沒有提供這種元素的例子。 有人能給我提供一個有效的java例子嗎?

非常感謝提前!

回答

3

你不說你是如何產生你的輸出的,但最可能的解釋是你使用默認輸出格式RDF/XML。相反,如果您撥打

yourModel.write(outStream, "RDF/XML-ABBREV"); 

您將得到一個更緊湊的結構,它將很可能包含您的示例中的嵌套元素。

然而,有一個'然而'。

你不說你爲什麼「需要創建嵌套元素的RDF」。 Jena生成的所有輸出在RDF三元級別上在語義上相同。任何兼容的RDF處理器都會通過解析序列化爲RDF/XML的模型(縮寫或非縮寫,Turtle,n-triples等)來生成相同的模型。因此,如果將輸出移交給另一個RDF進程,則無關緊要你的輸出是否有嵌套結構。

但是,如果您希望將輸出提供給XML工具鏈,那麼這可能會更困難。 RDF XML編碼非常複雜。此外,Jena XML編寫器不保證以特定順序將元素串行化。根據您正在編寫的Model的內容,XML結構可能會顯得截然不同。例如,這可以使編寫XSLT樣式表變得棘手。

如果您打算將RDF XML管道化到您的XML工具鏈中,那麼我會建議您創建一個自定義寫入程序,以您的XML工具可以依賴的格式生成可靠的輸出,或者可能使用SPARQL查詢您的模型並使用XML編碼SPARQL結果集作爲XML管道的輸入。 SPARQL的XML encoding比完整的RDF/XML更規則,是後續XML處理的更好基礎。

+0

(+1)很好的解釋伊恩。只是一個額外的評論,洛倫佐你可能想看看http://jena.sourceforge.net/tutorial/RDF_API/index.html#ch-Writing%20RDF作爲初始指針,看看如何用Jena編寫RDF。 – 2011-03-27 18:42:17