2014-11-29 10 views
6

Chciałbym wiedzieć, czy istnieje sposób na znalezienie encji Wikidata według określonej właściwości przy użyciu ich API. Na przykład istnieje wiele obiektów mających własność Freebase ID (Właściwość: P646). Jest to unikalny identyfikator i chcę uzyskać encję po tym identyfikatorze.Jak znaleźć encję Wikidata według nieruchomości?

Ktoś wie, jak to osiągnąć?

Odpowiedz

8

[zaktualizowane odpowiedź: używając końcowego sparql]

wdq jest zastępowany przez urzędowego SPARQL końcowego, gdzie ta kwerenda wygląda następująco:

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

można try it at query.wikidata.org

i aby uzyskać wyniki tego zapytania w JSON, możesz wysłać żądanie pod adresem "https://query.wikidata.org/sparql?format=json&query=YOURQUERY", gdzie YOURQUERY to zapytanie SPARQL kodowane przez URI:

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

[starą odpowiedź: using WDQ]

można pobrać API wmflabs (documentation) tak:

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

Tutaj kwerendy podmioty wikidane z właściwością 646 o wartości /m/0gnfq.

Odpowiedź będzie wyglądać następująco:

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

Podmiot Szukałam zatem Q180736.

W tym przypadku zapytanie używa parametru string, ponieważ identyfikatory wolnej bazy są ciągami w wikidata, ale w przypadku właściwości sugerujących obiekty wikidata jako typ wartości, należy użyć parametru claim. Przykład z dokumentów:

żądanie [138: 676555] zwraca wszystkie elementy o nazwach (P138) Franciszka (Q676555).

+0

Wygląda na to, że obecnie nie ma żadnych innych opcji. To trochę dziwne, że tak ambitny projekt nie ma tak prostej funkcjonalności. – Inf

+0

Ten artykuł z września 2013 r. Na temat [Wdq tool background] (http://magnusmanske.de/wordpress/?p=72) jest bardzo wnikliwy w tej kwestii: to naprawdę nie jest tak proste. – maxlath

1

Istnieje obecnie końcowym SPARQL na https://query.wikidata.org

tam można wpisać w zapytaniu SPARQL dla wikidane. na przykład, dla właściwości wolnej zasady może to wyglądać tak:

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

ja też wolę Wikidata Query API, ale jeśli potrzebujesz trochę więcej informacji na temat elementów, które można wykorzystać Wikidata API. Na przykład w twoim przypadku wszystkie elementy, które zawierają link do właściwości Freebase identifier (P646), to:

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