Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to find a Wikidata entity by property?

I would like to know, is there a way to find a Wikidata entity by specified property using their API. For example, there are plenty entities that have Freebase ID property (Property:P646). It's unique identifier and I want to get an entity by this identifier.

Anyone know how to achieve this?

like image 452
Ihor Avatar asked Nov 29 '14 12:11

Ihor


2 Answers

[updated answer: using the SPARQL endpoint]

wdq is being replaced by an official SPARQL endpoint, where this query looks like this:

PREFIX wdt: <http://www.wikidata.org/prop/direct/>
SELECT ?item ?itemLabel WHERE {
  ?item wdt:P646 "/m/0gnfq" .
}

you can try it at query.wikidata.org

and to get this query's results in JSON, you can make a request at "https://query.wikidata.org/sparql?format=json&query=YOURQUERY" where YOURQUERY is the URI-encoded SPARQL query:

https://query.wikidata.org/sparql?format=json&query=PREFIX%20wikibase%3A%20%3Chttp%3A%2F%2Fwikiba.se%2Fontology%23%3E%20PREFIX%20wdt%3A%20%3Chttp%3A%2F%2Fwww.wikidata.org%2Fprop%2Fdirect%2F%3E%20SELECT%20%3Fitem%20%3FitemLabel%20WHERE%20%7B%20%3Fitem%20wdt%3AP646%20%22%2Fm%2F0gnfq%22%20.%20SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22en%22%20.%20%7D%20%7D

[old answer: using WDQ]

you can fetch the wmflabs API (documentation) like this:

http://wdq.wmflabs.org/api?q=string[646:/m/0gnfq]

Here, I query the wikidata entities with Property 646 of value /m/0gnfq.

The answer will look like this:

{
  "status": {
    "error": "OK",
    "items": 1,
    "querytime": "161ms",
    "parsed_query": "STRING[646:'/m/0gnfq']"
  },
  "items": [
    180736
  ]
}

The entity I was looking for is thus Q180736.

Here, the query uses the string parameter as freebase IDs are strings in wikidata, but for properties implying wikidata entities as value type, you will need to use the claim parameter. An example from the documentation:

claim[138:676555] returns all items that are named after (P138) Francis of Assisi (Q676555).

like image 194
maxlath Avatar answered Oct 11 '22 14:10

maxlath


There is now a SPARQL endpoint at https://query.wikidata.org

There you can type in your SPARQL query for Wikidata. e.g., for the Freebase property it could look like this:

PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX wikibase: <http://wikiba.se/ontology#>
PREFIX p: <http://www.wikidata.org/prop/>
PREFIX v: <http://www.wikidata.org/prop/statement/>
PREFIX q: <http://www.wikidata.org/prop/qualifier/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

SELECT ?subject ?subjectLabel WHERE {
  ?subject wdt:P646 ?object .

  SERVICE wikibase:label {
    bd:serviceParam wikibase:language "en" .
  }
} LIMIT 10
like image 39
Finn Årup Nielsen Avatar answered Oct 11 '22 12:10

Finn Årup Nielsen