python - 使用 Python 中的 RDFlib 来自 RDF 的文本

标签 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> 

我想只提取这个文件的文本部分,也就是说,我在这种情况下的输出是:

output_ tex = "Johann Sebastian Bach, German composer and organist,1685-03-21, 1750-07-28, Eisenach, Leipzig"

如何使用 RDFlib 获得此结果?

最佳答案

基于 Joshua Taylor的答案,您正在寻找的方法是“toPython”,其中 docs say "返回从该 RDF 文字派生的适当的 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)

关于python - 使用 Python 中的 RDFlib 来自 RDF 的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19314561/

相关文章:

javascript - 如何在其中保留 div 的文本,如果更大,则 div 向下扩展?

CSS 文本溢出哦天啊真是一团糟

sparql - 为什么过滤器在这种情况下不起作用?

python - Pandas Dataframe 中的空白列

面向业余程序员的 Python(几个问题)

python - (正则表达式)如何在python中删除引号和里面的内容?

python - Selenium Python 脚本

java - Android Studio - 如何从文本文件中读取(行)?

python - 使用 Python 分隔字段内的逗号分隔文本

sparql - 为什么可选绑定(bind)不起作用