I’m trying to run SPARQL queries on turtle files using python, but my sparql returns all the entries, how can I return the entry with name=”Idham Al-Taif Mahmoud”?
turtle file:
JavaScript
x
23
23
1
<http://example.org/person/a6376-dh3642> <http://dbpedia.org/ontology/hasName> "Idham Al-Taif Mahmoud".
2
<http://example.org/person/a6376-dh3642> <http://dbpedia.org/ontology/diedOn> "28 Feb 2017".
3
<http://example.org/person/a6376-dh3642> <http://dbpedia.org/ontology/hasAge> "adult".
4
<http://example.org/person/a6376-dh3642> <http://dbpedia.org/ontology/hasSex> "male".
5
<http://example.org/person/a6376-dh3642> <http://dbpedia.org/ontology/diedIn> "Samarra, south of Salah Al-Din".
6
<http://example.org/person/a6363-fn3690> <http://dbpedia.org/ontology/hasName> "Shukran Ghanim Hussein".
7
<http://example.org/person/a6363-fn3690> <http://dbpedia.org/ontology/diedOn> "26 Feb 2017".
8
<http://example.org/person/a6363-fn3690> <http://dbpedia.org/ontology/hasAge> "child".
9
<http://example.org/person/a6363-fn3690> <http://dbpedia.org/ontology/hasSex> "male".
10
<http://example.org/person/a6363-fn3690> <http://dbpedia.org/ontology/diedIn> "Hay Koor, west Mosul".
11
<http://example.org/person/a6348-sz3469> <http://dbpedia.org/ontology/hasName> "Munther Al-Ajaj ".
12
<http://example.org/person/a6348-sz3469> <http://dbpedia.org/ontology/hasMaritalStatus> "married".
13
<http://example.org/person/a6348-sz3469> <http://dbpedia.org/ontology/hasParentalStatus> "parent".
14
<http://example.org/person/a6348-sz3469> <http://dbpedia.org/ontology/diedOn> "25 Feb 2017".
15
<http://example.org/person/a6348-sz3469> <http://dbpedia.org/ontology/hasAge> "adult".
16
<http://example.org/person/a6348-sz3469> <http://dbpedia.org/ontology/hasSex> "male".
17
<http://example.org/person/a6348-sz3469> <http://dbpedia.org/ontology/diedIn> "Al-Mazra'a village, Baiji, north of Salah Al-Din".
18
<http://example.org/person/a6381-xz3480> <http://dbpedia.org/ontology/hasName> "Shifa Gerdi/Born Shifa Zikri Ibrahim Gerdi".
19
<http://example.org/person/a6381-xz3480> <http://dbpedia.org/ontology/diedOn> "25 Feb 2017".
20
<http://example.org/person/a6381-xz3480> <http://dbpedia.org/ontology/hasAge> "young adult".
21
<http://example.org/person/a6381-xz3480> <http://dbpedia.org/ontology/hasSex> "female".
22
<http://example.org/person/a6381-xz3480> <http://dbpedia.org/ontology/diedIn> "west Mosul".
23
python code:
JavaScript
1
23
23
1
import rdflib
2
3
filename = "turtle.ttl"
4
5
6
g = rdflib.Graph()
7
8
result = g.parse(filename, format='ttl')
9
print(result)
10
11
query = """
12
13
SELECT ?person
14
WHERE {
15
?person <http://dbpedia.org/ontology/hasName> "Idham Al-Taif Mahmoud"
16
}
17
18
"""
19
20
g.query(query)
21
for stmt in g:
22
print(stmt)
23
Advertisement
Answer
I think your issue is with the methods. Here is a link with a nice example of what you want to do.
The following script works for me:
JavaScript
1
23
23
1
import rdflib
2
3
filename = "turtle.ttl"
4
5
6
g = rdflib.Graph()
7
8
g.parse(filename, format='ttl')
9
10
query = """
11
12
SELECT ?person
13
WHERE {
14
?person <http://dbpedia.org/ontology/hasName> "Idham Al-Taif Mahmoud"
15
}
16
17
"""
18
19
qres = g.query(query)
20
21
for row in qres :
22
print("%s" % row)
23
Notice that I assign the results of the query to a new variable qres
, and also that the parse
method is void, i.e. it does not return a value like you had.
The %
signs in the end are just to print a human readable result, but you can totally get rid of them.