如何解决在海龟文件上运行 SPARQL 查询
我正在尝试使用 python 对海龟文件运行 SPARQL 查询,但我的 sparql 返回所有条目,我该如何返回 name="Idham Al-Taif Mahmoud" 的条目?
海龟文件:
<http://example.org/person/a6376-dh3642> <http://dbpedia.org/ontology/hasName> "Idham Al-Taif Mahmoud".
<http://example.org/person/a6376-dh3642> <http://dbpedia.org/ontology/diedOn> "28 Feb 2017".
<http://example.org/person/a6376-dh3642> <http://dbpedia.org/ontology/hasAge> "adult".
<http://example.org/person/a6376-dh3642> <http://dbpedia.org/ontology/hasSex> "male".
<http://example.org/person/a6376-dh3642> <http://dbpedia.org/ontology/diedIn> "Samarra,south of Salah Al-Din".
<http://example.org/person/a6363-fn3690> <http://dbpedia.org/ontology/hasName> "Shukran Ghanim Hussein".
<http://example.org/person/a6363-fn3690> <http://dbpedia.org/ontology/diedOn> "26 Feb 2017".
<http://example.org/person/a6363-fn3690> <http://dbpedia.org/ontology/hasAge> "child".
<http://example.org/person/a6363-fn3690> <http://dbpedia.org/ontology/hasSex> "male".
<http://example.org/person/a6363-fn3690> <http://dbpedia.org/ontology/diedIn> "Hay Koor,west Mosul".
<http://example.org/person/a6348-sz3469> <http://dbpedia.org/ontology/hasName> "Munther Al-Ajaj ".
<http://example.org/person/a6348-sz3469> <http://dbpedia.org/ontology/hasMaritalStatus> "married".
<http://example.org/person/a6348-sz3469> <http://dbpedia.org/ontology/hasParentalStatus> "parent".
<http://example.org/person/a6348-sz3469> <http://dbpedia.org/ontology/diedOn> "25 Feb 2017".
<http://example.org/person/a6348-sz3469> <http://dbpedia.org/ontology/hasAge> "adult".
<http://example.org/person/a6348-sz3469> <http://dbpedia.org/ontology/hasSex> "male".
<http://example.org/person/a6348-sz3469> <http://dbpedia.org/ontology/diedIn> "Al-Mazra'a village,Baiji,north of Salah Al-Din".
<http://example.org/person/a6381-xz3480> <http://dbpedia.org/ontology/hasName> "Shifa Gerdi/Born Shifa Zikri Ibrahim Gerdi".
<http://example.org/person/a6381-xz3480> <http://dbpedia.org/ontology/diedOn> "25 Feb 2017".
<http://example.org/person/a6381-xz3480> <http://dbpedia.org/ontology/hasAge> "young adult".
<http://example.org/person/a6381-xz3480> <http://dbpedia.org/ontology/hasSex> "female".
<http://example.org/person/a6381-xz3480> <http://dbpedia.org/ontology/diedIn> "west Mosul".
python 代码:
import rdflib
filename = "turtle.ttl"
g = rdflib.Graph()
result = g.parse(filename,format='ttl')
print(result)
query = """
SELECT ?person
WHERE {
?person <http://dbpedia.org/ontology/hasName> "Idham Al-Taif Mahmoud"
}
"""
g.query(query)
for stmt in g:
print(stmt)
解决方法
我认为您的问题在于方法。 Here 是一个包含您想要做什么的很好示例的链接。
以下脚本对我有用:
import rdflib
filename = "turtle.ttl"
g = rdflib.Graph()
g.parse(filename,format='ttl')
query = """
SELECT ?person
WHERE {
?person <http://dbpedia.org/ontology/hasName> "Idham Al-Taif Mahmoud"
}
"""
qres = g.query(query)
for row in qres :
print("%s" % row)
请注意,我将查询结果分配给了一个新变量 qres
,而且 parse
方法是无效的,即它不会像您那样返回值。
最后的 %
符号只是为了打印人类可读的结果,但您可以完全摆脱它们。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。