2016-05-22 4 views
1

Я ищу запрос, который выбирает литералы, написанные на английском языке, если применимо. Под применимым я имею в виду, что если запрошенный литерал является строкой, а не числом.SPARQL выбирает литералы с заданным языковым тегом Когда Applicable

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"; 
} 

проблема, если р является ДБО: среда не будет никаких результатов не дали, потому что число не имеет тега языка прилагается к нему. Есть ли способ сказать, есть ли языковые теги, выберите один на английском языке.

ответ

4

Вы бы можете использовать фильтр как

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

Если буквальный не имеет типа языка, вы получите обратно «», но если это произойдет, то он должен был соответствовать «ан». Вы можете добавить больше проверок на тип данных, если хотите, используя функцию типа данных, чтобы получить тип данных литерала.