Frage

Ich habe diese Frage. Es passt zu allem, was in seinem Namen "Süden" hat. Aber ich will nur den, dessen foaf:name ist genau "südlich".

SELECT Distinct ?TypeLabel 
WHERE
{
    ?a     foaf:name   "South" .
    ?a     rdf:type    ?Type .
    ?Type  rdfs:label  ?TypeLabel .
}
War es hilfreich?

Lösung

(Ausbrechen aus Kommentaren dafür)

Datenprobleme

Das Problem sind die Daten, nicht Ihre Abfrage. Wenn Sie die folgende Abfrage verwenden:

SELECT DISTINCT ?a 
WHERE { 
    ?a foaf:name "Imran Khan" . 
}

Sie finden (wie Sie sagen) "Imran Khan Niazy". Aber betrachten Sie den dbpedia -Eintrag für Imran Khan, Sie werden beides sehen:

foaf:name "Imran Khan Niazy"
foaf:name "Imran Khan"

Dies liegt daran, dass RDF die wiederholte Verwendung von Eigenschaften ermöglicht.

Weil

"South" hatte die gleiche Ausgabe (Album, Künstler und seltsamerweise 'South Luton'). Dies sind Fälle, in denen es beide bekannte Namen ("Imran Khan", "South") und genauere Namen ("Imran Khan Niazy", "South (Album)") zum Zwecke der Korrektheit oder Disambusion gibt.

Auflösung

Wenn Sie eine genauere Übereinstimmung wünschen, versuchen Sie einen Typ hinzuzufügen (z. http://dbpedia.org/ontology/musicalwork für das Album).

In acht nehmen

Seien Sie sich bewusst, dass dbpedia aus Wikipedia stammt und der Extraktionsprozess nicht perfekt ist. Dies ist ein Bereich, der lebendig mit wackeligen Daten lebt. Gehen Sie also nicht davon aus, dass Ihre Abfrage schief gelaufen ist.

Andere Tipps

Ein bisschen spät aber trotzdem ... ich denke, das ist es, wonach du suchst:

SELECT Distinct ?TypeLabel Where { 
?a foaf:name ?name . 
?a rdf:type ?Type . 
?Type rdfs:label ?TypeLabel . 
FILTER (?name="South"^^xsd:string)
}

Sie können den Filter mit den XSD -Typen verwenden, um das Ergebnis einzuschränken. Hoffe das hilft ... Prost!

Diese Abfrage sollte genau dem wörtlichen übereinstimmen South und nicht Literale, die nur enthalten South als Substring. Für teilweise Übereinstimmungen würden Sie gehen FILTER mit zB REGEX(). Ihr Abfragemotor ist in diesem Sinne gebrochen - mit welcher Abfrage -Engine arbeiten Sie?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top