2016-08-15 144 views
1

我有一個RDF數據集,其中三元組存儲在的N-Triples格式類似如下:RDFLib空節點打印

<http://ebola.ndssl.bi.vt.edu/country/1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://ebola.ndssl.bi.vt.edu/vocab/country> . 
_:AmapX3aXcountryX5fXcountryX5fXnameX5fXclassMapX40XX40X1 <http://ebola.ndssl.bi.vt.edu/vocab/hasValue> "Guinea" . 

我想要做一些處理與空白節點。我正在編寫一個程序在Python中讀取這個文件。我正在使用Python RDFLib庫。閱讀文件後,我打印它的內容。但是,問題在於空白節點名稱的出現方式不同。例如:

_:AmapX3aXcountryX5fXcountryX5fXnameX5fXclassMapX40XX40X1 
is showing like following 
N75424221e7df43708c3e2a135e3e888b 

我需要原來的RDF文件的空白節點名稱如下:

_:AmapX3aXcountryX5fXcountryX5fXnameX5fXclassMapX40XX40X1 

如何打印原始的RDF文件的空白節點名稱?

回答

4

你(可能)不能。空白節點id對於它們所在的特定文件是本地的,它們不能保證在不同的串行化之間保留。 RDFLib只是用它自己的新內部ID來替換這個id。

有些工具具有解析器設置,可以選擇保留節點ID。我不知道RDFLib是否支持這個功能,但即使這樣做:除非您有一個特定的用例,否則您不應該依賴保留的空節點ID。他們被稱爲空白有一個原因:他們的ID是所有意圖和目的「未知」。

+0

您能否給我這樣的工具的名字? –

+0

RDF4J的Rio解析器支持這一點。我很確定耶拿的Riot解析器也可以。我不知道RDFLib是否支持它,它可能會(查看解析器文檔)。但正如所說:在大多數情況下,你本來就不應該依賴這一點。 –

+1

更好的是,如果您需要依賴那些被認爲是相同資源的人,請給他們一個IRI並使用它。 – Michael