2014-11-29 14 views
6

Bilmek istiyorum, onların API kullanarak belirtilen özellik tarafından bir Wikidata varlık bulmak için bir yol var mı. Örneğin, Freebase ID özelliğine sahip birçok varlık var (Özellik: P646). Bu benzersiz bir tanımlayıcı ve ben bu tanımlayıcı tarafından bir varlık almak istiyorum.Özelliklerine göre Wikidata varlığı nasıl bulunur?

Bunu nasıl başaracağını bilen var mı?

cevap

8

[güncellenmiş cevap: SPARQL uç noktasını kullanarak]

YKA = WDQ bu sorgu şöyle resmi SPARQL son nokta ile değiştirilir ediliyor:

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

yapabilirsiniz try it at query.wikidata.org

ve bu sorgunun JSON'daki sonuçlarını almak için, "https://query.wikidata.org/sparql?format=json&query=YOURQUERY" adresinde bir istekte bulunabilirsiniz. Burada YOURQUERY, URI kodlu SPARQL sorgusudur:

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

[eski cevabı: kullanarak YKA = WDQ]

böyle wmflabs API (documentation) getirebilir: Burada

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

, ben Mülkü'yle vikiveri varlıkları sorgulamak /m/0gnfq numaralı 646.

cevabı aşağıdaki gibi görünecektir: aradığım

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

varlık böylece Q180736 olduğunu. İşte

, sorgu serbest baz kimlikleri vikiveri içinde dizeleri gibi string parametresini kullanır, ancak değer türü olarak kurumlar vikiveri ima özellikleri için, size claim parametre kullanmak gerekecektir. belgeleri bir örnek:

iddia [138: 676.555] Assisi'nin (P138) Francis (Q676555) adını tüm ürün verir.

+0

görünüyor. Bu kadar iddialı projenin böyle basit bir işlevselliği olmadığı garip. – Inf

+0

bu Eylül 2013 tarihinde [wdq araç arka plan öyküsü] (http://magnusmanske.de/wordpress/?p=72) bu konu hakkında çok bilgidir: görünüşte bu kadar basit değil. – maxlath

1

şimdi vikiveri için SPARQL sorgusu yazabilirsiniz Orada https://query.wikidata.org

bir SPARQL son nokta yoktur. örneğin Freebase özellik için bu gibi görünebilir:

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

Ben de Wikidata Query API tercih, ancak öğeleri hakkında biraz daha bilgi gerekirse Wikidata API kullanabilirsiniz. Örneğin, senin durumunda, Freebase identifier (P646) mülküne bağlayacaksınız tüm öğeleri şunlardır: hiçbir diğerleri seçeneklerin şu anda var gibi

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