2016-08-15 142 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