Reading the paper "Wikidata through the Eyes of DBpedia" (2015), I came across this SPARQL query:
select * WHERE {
?place wkdt:P31c/wkdt:P279c* wkdt:Q2221906;
wkdt:P17c wkdt:Q183. }
I don't understand what the c means beside the property codes.
The authors explain (page 8, lines 1 and 2) that "querying for reified
statement in Wikidata needs to properly suffix the Wikidata property with c/s/q"
This is the first time I hear about these suffixes and my research on the net does not help.
Could someone tell me more about that ?
Related
all.
I'm trying to write a simple SPARQL query generator to fetch all rdf:type relations of a specific DBPedia resource.
query = """SELECT * WHERE {{ <""" + resource """> rdfs:type ?subject.}}"""
This yields the Query
SELECT * WHERE {{ <http://dbpedia.org/page/Energy> rdfs:type ?subject.}}
But the query returns empty. What am I doing wrong? The DBPedia entry clearly has rdfs:type relations:
owl:Thing
dbo:Building
yago:Abstraction100002137
yago:Assets113329641
yago:NaturalResource113332009
yago:Possession100032613
yago:Relation100031921
yago:Resource113331778
yago:WikicatNaturalResources
Thanks in advance!
Change the energy address from page to resource, the query looks like this (in addition, I suggest you to use the a instead of therdf:type):
SELECT * WHERE {{ <http://dbpedia.org/resource/Energy> a ?subject.}}
In order to avoid this issue, chech the exact resurces addresses in a raw data format. For example, the XML triples can be reviewed with a web browser from the dbpedia webpage. http://dbpedia.org/page/Energy, in the top bar there is a button named formats.
Howto get a list of the top 10 highest mountains from dbpedia ?
I don't know howto start, because I already fail by looking for the correct properties of a specific mountain.
I can't find any property of 'elevation' or 'altitude' in
http://dbpedia.org/page/Mount_Everest
I thought that an interesting property would be the elevation ?
Can someone help ?
This is a problem with publicly curated data, there's no formal schema, so some of the mountains have dbo:elevation (http://dbpedia.org/page/Lhotse) and some only have dbp:elevationRef (http://dbpedia.org/page/K2). You have two options, one technical, one socially beneficial.
Technical option would be a query to get the top 14 and use post processing on the string "(Ranking x)" to get the top 10.
SELECT DISTINCT ?mountain ?rank
WHERE {
?mountain dbp:listing dbr:Eight-thousander.
?mountain dbp:elevationRef ?rank.
}
Socially beneficial solution is to go through those mountains in the Eight-thousander category on Wikipedia and make sure they all have the elevation property set in their description boxes so that DBpedia will scrape it and you can run the query you want:
SELECT DISTINCT ?mountain ?elevation
WHERE {
?mountain dbp:listing dbr:Eight-thousander.
?mountain dbo:elevation ?elevation.
}
ORDER BY DESC(?elevation)
LIMIT 10
I have a data source file that one of its properties is an actual class instance:
<clinic:Radiology rdf:ID="rad1234">
<clinic:diagnosis>Stage 4</clinic:diagnosis>
<clinic:ProvidedBy rdf:resource="#MountSinai"/>
<clinic:ReceivedBy rdf:resource="#JohnSmith"/>
<clinic:patientId>7890123</clinic:patientId>
<clinic:radiologyDate>01-01-2017</clinic:radiologyDate>
</clinic:Radiology>
so clinic:ProvidedBy is pointing to this:
<clinic:Radiologists rdf:ID="MountSinai">
<clinic:name>Mount Sinai</clinic:name>
<clinic:npi>1234567</clinic:npi>
<clinic:specialty>Oncology</clinic:specialty>
</clinic:Radiologists>
How do I query using the property clinic:providedBy (which is of type clinic:Radiologists)? Whatever I have tried does not bring back results.
It's also not clear what exactly you want to have, so my answer will return "all radiology resources that are provided by MountSinai":
PREFIX clinic: <THE NAMESPACE OF_THE_CLINIC_PREFIX>
PREFIX : <THE_BASE_NAMESPACE_OF_YOUR_RDF_DOCUMENT>
SELECT DISTINCT ?s WHERE {
?s clinic:ProvidedBy :MountSinai
}
But, I really suggest to start with an RDF and SPARQL tutorial, since form your comment your query
SELECT * WHERE { ?x rdf:resource "#MountSinai" }
is missing fundamental SPARQL basics. And for writing a matching SPARQL query it'S always good to have a look at the data in Turtle resp. N-Triples format both of which being closer to the SPARQL syntax.
I am trying to teach myself this weekend how to run API queries against a data source in this case data.gov. At first I thought I'd use a simple SQL variant, but it seems in this case I have to use SPARQL.
I've read through the documentation, downloaded Twinkle, and can't seem to quite get it to run. Here is an example of a query I'm running. I'm basically trying to find all gas stations that are null around Denver, CO.
PREFIX station: https://api.data.gov/nrel/alt-fuel-stations/v1/nearest.json?api_key=???location=Denver+CO
SELECT *
WHERE
{ ?x station:network ?network like "null"
}
Any help would be very much appreciated.
SPARQL is a graph pattern language for RDF triples. A query consists of a set of "basic graph patterns" described by triple patterns of the form <subject>, <predicate>, <object>. RDF defines the subject and predicate with URI's and the object is either a URI (object property) or literal (datatype or language-tagged property). Each triple pattern in a query must therefore have three entities.
Since we don't have any examples of your data, I'll provide a way to explore the data a bit. Let's assume your prefix is correctly defined, which I doubt - it will not be the REST API URL, but the URI of the entity itself. Then you can try the following:
PREFIX station: <http://api.data.gov/nrel...>
SELECT *
WHERE
{ ?s station:network ?network .
}
...setting the PREFIX to correctly represent the namespace for network. Then look at the binding for ?network and find out how they represent null. Let's say it is a string as you show. Then the query would look like:
PREFIX station: <http://api.data.gov/nrel...>
SELECT ?s
WHERE
{ ?s station:network "null" .
}
There is no like in SPARQL, but you could use a FILTER clause using regex or other string matching features of SPARQL.
And please, please, please google "SPARQL" and "RDF". There is lots of information about SPARQL, and the W3C's SPARQL 1.1 Query Language Recommendation is a comprehensive source with many good examples.
I use this sparql query to get as much cities as possible:
select * where {
?city rdf:type dbo:PopulatedPlace
}
However, some expected ones are missing e.g.
http://dbpedia.org/resource/Heidelberg
(neither that nor one of its wikiRedirects)
which is of a dbo:PopulatedPlace as this query returns true (in JSON):
ask {
:Heidelberg a dbo:PopulatedPlace
}
I need that list to be exhaustiv because later I will add constraints based on user input.
I use http://dbpedia.org/snorql/ to test the queries.
Any help is appreciated.
UPDATE:
One of the Devs told me the public endpoint is limited ( about 1K ).
I'll come up with a paginated solution and see if it contains the 'outlier'.
UPDATE2:
The outlier is definitly in the resultset of rdf:type dbo:Town.
Using dbo:PopulatedPlace yields too many results to check per hand, though.
The public endpoint limits results to about 1K. Pagination or use of a smaller subclass of dbo:PopulatedPlace yields the result.