簡體   English   中英

將RDF文本添加到圖形RDFlib

[英]Adding RDF text to graph 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中,使用耶拿,我用做這樣的事情ByteArrayInputStream創建從RDF文字的輸入流,我就可以傳遞給剖析功能(一般都接受URI和InputStreams。對於文檔Graph.parse

解析(來源=無,publicID =無,格式=無,位置=無,文件=無,數據=無,** args)

參數

  • source:一個InputSource,類似文件的對象或字符串。 如果是字符串,則字符串是源的位置。

更新: lawlesst提供了一個答案 ,指出Graph.parse的數據參數可以是包含RDF內容的字符串。 文檔現在提到了這一點,但是我最初回答時並沒有這樣做。 我認為應優先選擇Lawlesst的答案。

因此,要應用相同的習慣用法,您只需要從字符串中創建一個InputSource或“類似文件的對象”。 我不是一個Pythonista的使用者,所以我本來以為您想采用InputSource路由,但這似乎是SAX解析器。 您可能想要的是Python的StringIO

7.5。 StringIO —讀取和寫入字符串作為文件

該模塊實現了類似文件的類StringIO,該類讀取和寫入字符串緩沖區(也稱為內存文件)。 有關操作,請參見文件對象的描述(文件對象部分)。 (有關標准字符串,請參見str和unicode。)

類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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM