Il 22/04/2015 00:05, James Douglas ha scritto:
Here's the (nearly) equivalent query for the statements dump[1] loaded into Blazegraph:
PREFIX wd: http://www.wikidata.org/entity/ SELECT DISTINCT ?city ?citylabel ?mayorlabel WHERE { ?city wd:P31s/wd:P31v wd:Q515 . # find instances of subclasses of city ?city wd:P6s ?statement . # with a P6 (head of goverment) statement ?statement wd:P6v ?mayor . # ... that has the value ?mayor ?mayor wd:P21s/wd:P21v wd:Q6581072 . # ... where the ?mayor has P21 (sex or gender) female FILTER NOT EXISTS { ?statement wd:P582q ?x } # ... but the statement has no P582 (end date) qualifier
# Now select the population value of the ?city # (the number is reached through a chain of three properties) ?city wd:P1082s/wd:P1082v/http://www.wikidata.org/ontology#numericValue ?population .
# Optionally, find English labels for city and mayor: OPTIONAL { ?city wd:P373s/wd:P373v ?citylabel . # FILTER ( LANG(?citylabel) = "en" ) } OPTIONAL { ?mayor wd:P373s/wd:P373v ?mayorlabel . # FILTER ( LANG(?mayorlabel) = "en" ) }
} ORDER BY DESC(?population) LIMIT 100
Free beer to anyone who can figure out how to use those language filters. Would we need to also load property definitions[2]?
James,
I believe language filters are defined only on rdfs:label, not on the P373 property(-ies). Replace wd:P373s/wd:P373v with rdfs:label and it will work.
Nicola
P.S. Where is my beer? :-)