Mar*_*elo 2 python text rdf rdflib
我有一个rdf文件,例如:
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dbp="http://dbpedia.org/ontology/"
xmlns:dbprop="http://dbpedia.org/property/"
xmlns:foaf="http://xmlns.com/foaf/0.1/">
<rdf:Description rdf:about="http://dbpedia.org/page/Johann_Sebastian_Bach">
<dbp:birthDate>1685-03-21</dbp:birthDate>
<dbp:deathDate>1750-07-28</dbp:deathDate>
<dbp:birthPlace>Eisenach</dbp:birthPlace>
<dbp:deathPlace>Leipzig</dbp:deathPlace>
<dbprop:shortDescription>German composer and organist</dbprop:shortDescription>
<foaf:name>Johann Sebastian Bach</foaf:name>
<rdf:type rdf:resource="http://dbpedia.org/class/yago/GermanComposers"/>
<rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/>
</rdf:Description>
</rdf:RDF>
Run Code Online (Sandbox Code Playgroud)
而且我只想提取这个文件的文本部分,即在这种情况下我的输出是:
output_ tex = "Johann Sebastian Bach, German composer and organist,1685-03-21, 1750-07-28, Eisenach, Leipzig"
Run Code Online (Sandbox Code Playgroud)
如何使用RDFlib获得此结果?
在Joshua Taylor的回答的基础上,您正在寻找的方法是"toPython",文档称"返回从此RDF Literal派生的适当的python数据类型".此代码段应该返回您要查找的内容:
raw_data = """<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dbp="http://dbpedia.org/ontology/"
xmlns:dbprop="http://dbpedia.org/property/"
xmlns:foaf="http://xmlns.com/foaf/0.1/">
<rdf:Description rdf:about="http://dbpedia.org/page/Johann_Sebastian_Bach">
<dbp:birthDate>1685-03-21</dbp:birthDate>
<dbp:deathDate>1750-07-28</dbp:deathDate>
<dbp:birthPlace>Eisenach</dbp:birthPlace>
<dbp:deathPlace>Leipzig</dbp:deathPlace>
<dbprop:shortDescription>German composer and organist</dbprop:shortDescription>
<foaf:name>Johann Sebastian Bach</foaf:name>
<rdf:type rdf:resource="http://dbpedia.org/class/yago/GermanComposers"/>
<rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/>
</rdf:Description>
</rdf:RDF>"""
import rdflib
graph = rdflib.Graph()
graph.parse(data=raw_data)
output = []
for s, p, o in graph:
if type(o) == rdflib.term.Literal:
output.append(o.toPython())
print ', '.join(output)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2873 次 |
| 最近记录: |