将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)

参数

  • 源:一个InputSource,类文件对象或字符串。 在字符串的情况下,字符串是源的位置。
  • 更新: 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

    上一篇: Adding RDF text to graph RDFlib

    下一篇: Parsing large NTriples File Python