Python 将RDF文本添加到图形RDFlib
如何将分配给变量的RDF文本(该文本也经过验证,是正确的RDF)添加到RDFlib中的图形中 我将一个变量分配给一组RDf格式的文本,如下所示:Python 将RDF文本添加到图形RDFlib,python,rdf,rdflib,Python,Rdf,Rdflib,如何将分配给变量的RDF文本(该文本也经过验证,是正确的RDF)添加到RDFlib中的图形中 我将一个变量分配给一组RDf格式的文本,如下所示: block='' ....................... ....................... ''' 我知道我可以将其写入一个文件,然后将该文件读取到图形中,但我想知道是否有一种方法可以将其添加到同一文件中的图形中(就像您对三元组所做的那样),类似于: graph.add(block) 游戏的最终目的是使用以下方式以N3格式显示
block=''
.......................
.......................
'''
我知道我可以将其写入一个文件,然后将该文件读取到图形中,但我想知道是否有一种方法可以将其添加到同一文件中的图形中(就像您对三元组所做的那样),类似于:
graph.add(block)
游戏的最终目的是使用以下方式以N3格式显示它们:
print (wordnet.graph.serialize(format='n3'))
在Java中,使用Jena,我使用从RDF文本创建一个输入流,然后将其传递给解析函数(通常接受URI和InputStreams) 解析(source=None,publicID=None,format=None,location=None,file=None,data=None,**参数) 参数:
- 源:InputSource、类似文件的对象或字符串。对于字符串,字符串是源的位置
InputSource
或“类似文件的对象”。我不是什么Pythonista,所以我最初认为您希望采用InputSource
路线,但这似乎是一个SAX解析器。您可能想要的是Python:
7.5.StringIO-读取和写入字符串作为文件
此模块实现了一个类似文件的类StringIO,用于读取和写入字符串缓冲区(也称为内存文件)。有关操作,请参阅文件对象的说明(文件对象部分)。(有关标准字符串,请参阅str和unicode。)
类StringIO.StringIO([buffer])创建StringIO对象时,可以通过将字符串传递给构造函数将其初始化为现有字符串。如果没有给定字符串,StringIO将开始为空。在这两种情况下,初始文件位置都从零开始 因此,如果您使用给定的文本创建一个
StringIO
,那么您可以将它作为第一个参数传递给Graph.parse
。正如我所说,我不是一个真正的Python用户,但我认为它看起来像这样:
block=''
…
'''
图g;
g、 解析(StringIO.StringIO(块),format='xml')
更新:基于此,无需StringIO即可简化为:
RDFLib Graph.parse方法将接受字符串形式的“data”关键字参数
#Where g is your graph.
g.parse(data=block, format="application/rdf+xml")
有一个问题
更新:我更新了我的答案,以包含下面每条评论的正确示例。在主控更改的情况下使用了4.1.2版本的标签。parse()中的“data”关键字选项允许您直接指向字符串,而无需使用StringIO(请参阅下面@lawlest的答案)。您链接到的行只有
stream.close()
。我认为这是一个更好的例子。这是一个更好的答案。我希望文档(我在回答中引用的文档)解释了data关键字参数的用途。(更新:现在看起来是这样。也许在我编写原始答案时不是这样?),这样会省去一些麻烦。
#Where g is your graph.
g.parse(data=block, format="application/rdf+xml")