将RDF文本添加到图形RDFlib
如何将已分配给变量的RDF文本(此文本已被验证并且是正确的RDF)添加到RDFlib中的图表中?
我有一个变量分配给一堆RDf格式的文本,如下所示:
block = '''<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:lem="http://www.example.eu/lem#" xmlns:lexinfo="http://www.sample.net/2.0/info#">
<lem:Lexicon rdf:about="http://myserver/myns#lex">
.......................
.......................
</rdf:RDF>'''
我知道我可以将它写入一个文件,然后将该文件读入图形中,但是我想知道是否有一种方法将此添加到同一文件中的图形中(就像您将用于三元组一样):
graph.add(block)
最终的游戏是用N3格式显示它们:
print (wordnet.graph.serialize(format='n3'))
在Java中,使用Jena,我使用ByteArrayInputStream
做了这样的事情,从RDF文本创建一个输入流,然后我可以将它传递给解析函数(通常接受URI和InputStreams) Graph.parse
的文档说,
parse(source = None,publicID = None,format = None,location = None,file = None,data = None,** args)
参数 :
更新: lawlesst提供了一个答案,指出Graph.parse的数据参数可以是包含RDF内容的字符串。 该文件现在提到,但我不认为这是我最初的回答。 在我看来,lawlesst的回答应该是首选。
所以要应用相同的习惯用法,你只需要从你的字符串中创建一个InputSource
或者“文件类对象”。 我不是一个Pythonista,所以我原本以为你会想要采用InputSource
路由,但看起来这是一个SAX解析器的东西。 你可能想要的是Python的StringIO
:
7.5。 StringIO - 读取和写入字符串作为文件
这个模块实现了一个类文件类StringIO,用于读写字符串缓冲区(也称为内存文件)。 请参阅文件对象的操作说明(文件对象部分)。 (对于标准字符串,请参阅str和unicode。)
class StringIO.StringIO([buffer])
当创建StringIO对象时,可以通过将字符串传递给构造函数来将其初始化为现有字符串。 如果没有给出字符串,StringIO将开始为空。 在这两种情况下,初始文件位置都从零开始。
所以看起来好像你用给定的文本创建了一个StringIO
,那么你可以将它作为Graph.parse
的第一个参数传递给它。 正如我所说,我不是一个真正的Python用户,但我认为它看起来像这样:
block = '''<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
…
</rdf:RDF>'''
Graph g;
g.parse( StringIO.StringIO(block), format='xml')
更新:根据lawlesst的回答,这可以简化没有StringIO,只是:
g.parse( data=block, format='xml' )
RDFLib Graph.parse方法将接受作为字符串的'data'关键字参数。
#Where g is your graph.
g.parse(data=block, format="application/rdf+xml")
RDFLib Graph文档中有一个示例。
更新:我更新了我的答案,在下面的每条评论中包含正确的示例。 案例大师更改时使用带标签的版本4.1.2。
链接地址: http://www.djcxy.com/p/65853.html