2014-11-29 11 views
6

Ich würde gerne wissen, gibt es eine Möglichkeit, eine Wikidata-Entität durch die angegebene Eigenschaft mithilfe ihrer API zu finden. Zum Beispiel gibt es viele Entitäten, die Freebase-ID-Eigenschaft haben (Eigenschaft: P646). Es ist ein eindeutiger Bezeichner und ich möchte eine Entität mit diesem Bezeichner erhalten.Wie findet man eine Wikidata-Entität nach Objekten?

Wer weiß, wie man das erreicht?

Antwort

8

[aktualisiert Antwort: mit der SPARQL-Endpunkt]

WDQ wird durch einen offiziellen SPARQL Endpunkt ersetzt werden, wobei diese Abfrage wie folgt aussieht:

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

Sie können try it at query.wikidata.org

Um die Ergebnisse dieser Abfrage in JSON abzurufen, können Sie eine Anfrage an "https://query.wikidata.org/sparql?format=json&query=YOURQUERY" senden, wobei YOURQUERY die URI-codierte SPARQL-Abfrage ist:

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

[alte Antwort: using WDQ]

Sie die wmflabs API holen kann (documentation) wie folgt aus:

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

Hier Abfrage ich die Wikidata Einheiten mit Immobilien 646 von Wert /m/0gnfq.

Die Antwort wird wie folgt aussehen:

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

Die Entität ich suchte somit Q180736.

Hier verwendet die Abfrage den Parameter string, da Freebase-IDs Strings in Wikidata sind, aber für Eigenschaften, die wikidata-Entitäten als Werttyp implizieren, müssen Sie den Parameter claim verwenden. Ein Beispiel aus der Dokumentation:

Anspruch [138: 676555] gibt alle Elemente, die nach (P138) Franz von Assisi (Q676555) benannt sind.

+0

Sieht so aus, als gäbe es derzeit keine anderen Optionen. Es ist irgendwie komisch, dass ein so ehrgeiziges Projekt keine so einfache Funktionalität hat. – Inf

+0

dieser September 2013 Stück auf der [WDQ-Tool Hintergrund Geschichte] (http://magnusmanSke.de/wordpress/?p=72) ist sehr aufschlussreich zu diesem Thema: es ist wirklich nicht so einfach, anscheinend. – maxlath

1

Es gibt jetzt einen SPARQL-Endpunkt bei https://query.wikidata.org

Es Sie in Ihrem SPARQL-Abfrage für Wikidata eingeben können. beispielsweise für die Freebase Eigenschaft könnte es so aussehen:

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 
1

Ich habe auch lieber Wikidata Query API, aber wenn Sie mehr Informationen über die Einzelteile benötigen, können Sie Wikidata API verwenden. In Ihrem Fall sind beispielsweise alle Elemente, die mit der Freebase identifier (P646)-Eigenschaft verknüpft sind:

https://www.wikidata.org/w/api.php?action=query&format=xml&generator=backlinks&gblnamespace=0&gbllimit=5000&prop=info&gbltitle=Property:P646 
Verwandte Themen