2016-05-27 19 views
4

Ich benutze KMDb Person ID, um Informationen aus der Wikidata-Datenbank zu erhalten. Das Ergebnis sind drei Zeilen mit drei IMDB-Codes. Wenn ich Schauspielerin wikidata Webseite (https://www.wikidata.org/wiki/Q7496795) schaue, kann ich sehen, dass nur einer von ihnen eine Referenz hat.sparql wikidata Identifikatoren Referenz

Wie kann ich nur diesen Artikel auswählen? Ist es möglich, die Referenz als Ausgabe der Sparql-Abfrage anzuzeigen?

Vielen Dank

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

SELECT ?wikidata ?imdb ?Q ?prop ?value 
     WHERE { 
    ?wikidata wdt:P345 ?imdb . 
    ?wikidata wdt:P31 wd:Q5 . 
    ?wikidata wdt:P1649 "00003964" . # KMDb person ID 
} 
LIMIT 10 

Antwort

6

References in Wikidata die Eigenschaft prov:wasDerivedFrom Herkunft Informationen über Aussagen darzustellen. In Ihrem Fall (der Wert Knoten auch eine Aussage) ein Weg, um ohne Wert von Referenzen befreite einfach wäre ein Triple-Muster für das hinzuzufügen:

SELECT ?wikidata ?imdb ?Q ?prop ?value 
WHERE 
{ 
    ?wikidata p:P345 ?statement. 
      ?statement ps:P345 ?imdb; 
         prov:wasDerivedFrom ?ref . 
    ?wikidata wdt:P31 wd:Q5. 
    ?wikidata wdt:P1649 "00003964". # KMDb person ID 
} 
LIMIT 10 

Aber Sie brauchen keine Variable hinzufügen für die Aussage überhaupt. Wie suggested by @WikidataFacts, wäre es effizienter sein, wenn das Objekt von p:P345 direkt die Beschreibung des Zuschnitts Knoten ist:

SELECT ?wikidata ?imdb ?Q ?prop ?value 
WHERE 
{ 
    ?wikidata p:P345 [ ps:P345 ?imdb; prov:wasDerivedFrom ?ref ]. 
    ?wikidata wdt:P31 wd:Q5. 
    ?wikidata wdt:P1649 "00003964". # KMDb person ID 
} 
LIMIT 10 

Es gibt mehr Optionen, wie expliziten leeren Knoten, oder Filterung nur Knoten, die mindestens eine haben Wert.

+0

Perfekt !!! Vielen Dank – Gionatha

+1

Während diese Antwort technisch korrekt ist, würde ich vorsichtig sein, abhängig von einer Referenz des Formulars "Importiert von xyz Wikipedia." Es hat wirklich keinen Wert mehr als überhaupt keine Referenz. Von den drei zurückgegebenen Identifikatoren ist einer klar falsch und die anderen beiden sind Duplikate von einander bei IMDb. Ich bin mir nicht sicher, ob es einen guten Weg gibt, den Fall von den Daten allein zu unterscheiden. –