2016-05-22 7 views
1

Ich bin auf der Suche nach einer Abfrage, die gegebenenfalls in Englisch geschriebene Literale auswählt. Mit anwendbar ich meine, wenn das angeforderte Literal eine Zeichenfolge und keine Zahl ist.SPARQL Auswahl Literale mit einem bestimmten Sprach-Tag Wenn zutreffend

function (String p){ 
... 
query= "select distinct ?o where { 

    <http://dbpedia.org/resource/Elizabeth:_The_Golden_Age> ?p ?t. 
    FILTER(langMatches(lang(?t), "EN")) 

} 
LIMIT 100"; 
} 

das Problem ist, wenn p ist dbo: runtime wird es keine Ergebnisse werden zurückgegeben, weil die Zahl keine Sprach-Tag mit ihm verbunden hat. Gibt es eine Möglichkeit zu sagen, ob Sprach-Tags vorhanden sind, wähle das in Englisch.

Antwort

4

würden Sie können einen Filter wie

filter (lang(?var) = "" || langMatches(lang(?var), "en")) 

verwenden Wenn die wörtliche keine Sprache Typ hat, bekommt man zurück „“, aber wenn es der Fall ist, dann musste es passen „en“. Sie können weitere Prüfungen für den Datentyp hinzufügen, wenn Sie möchten, indem Sie die Datentypfunktion verwenden, um den Datentyp des Literals abzurufen.