如何使用RDFLib导出RDF文件中的图形
我正在尝试使用Python 3.4中的RDFLib生成RDF数据。
这是一个简单的例子:
from rdflib import Namespace, URIRef, Graph
from rdflib.namespace import RDF, FOAF
data = Namespace("http://www.example.org#")
g = Graph()
g.add( (URIRef(data.Alice), RDF.type , FOAF.person) )
g.add( (URIRef(data.Bob), RDF.type , FOAF.person) )
g.add( (URIRef(data.Alice), FOAF.knows, URIRef(data.Bob)) )
#write attempt
file = open("output.txt", mode="w")
file.write(g.serialize(format='turtle'))
这段代码会出现以下错误:
file.write(g.serialize(format='turtle'))
TypeError : must be str, not bytes
如果我把最后一行换成:
file.write(str(g.serialize(format='turtle')))
我就不会再看到错误了,但结果是一个二进制流的字符串表示(以b'
开头的一行文本):
b'@prefix ns1: <http://xmlns.com/foaf/0.1/> .\n@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .\n@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .\n@prefix xml: <http://www.w3.org/XML/1998/namespace> .\n@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .\n\n<http://www.example.org#Alice> a ns1:person ;\n ns1:knows <http://www.example.org#Bob> .\n\n<http://www.example.org#Bob> a ns1:person .\n\n'
问题 我该如何正确地将图导出到文件中?
4 个回答
-1
这段代码的意思是把一些数据保存到一个文件里。具体来说,它把数据存储到一个叫做“output2.xml”的文件中,这个文件位于“G:/RootFolder/Tests_rdflib/Test_rdflib_1/”这个文件夹里。保存的格式是XML,这是一种常用的数据格式,方便存储和传输信息。
2
在这个函数里写上文件名对我来说是有效的:
g.serialize('output_file.ttl',format='ttl')
2
我在使用Python 3.7.3时也遇到了完全相同的问题。按照之前的回答,使用'destination'参数并没有帮助我,因为我想把三元组追加到RDF文件中。我明白问题出在Python 3中,字节(byte)这种数据结构取代了Python 2中的字符串。设置serialize方法的'encoding'参数也没有用。我在这个帖子中找到了一个有效的解决方案:对结果字符串进行解码。相应地
g.serialize(format='turtle')
使用
g.serialize(format='turtle').decode('utf-8')
或者你使用的任何格式。希望这能帮到你。
21
这个serialize 方法可以接受一个叫做目标的参数,这个参数是一个文件路径。在你的例子中,你应该使用:
g.serialize(destination='output.txt', format='turtle')
而不是
file = open("output.txt", "w")
file.write(g.serialize(format='turtle'))