2013-08-12 2 views
0

Я хочу получить полное имя языка с учетом аббревиатуры языка изокода. Мой SPARQL запрос выглядит следующим образом (с жестким кодированием языка "fr"@en):Выбор языков со специальным кодом ISO

PREFIX dbpprop: <http://dbpedia.org/property/> 
PREFIX dbo: <http://dbpedia.org/ontology/> 

SELECT ?language ?isocode 
WHERE 
{ ?language dbpprop:iso ?isocode. 
    ?language a dbo:Language. 
    FILTER (?isocode="fr"@en) 
} 

Запуск его через онлайн DBPedia endpoint дает нулевой результат - хотя я ожидаю получить «французский». Этот код работал год или два назад (если я не ошибаюсь). Поскольку никаких ошибок не появляется, я немного не понимаю. Ресурс DBPedia French language содержит как язык, так и свойство iso.

ответ

2

Вместо фильтрации вы можете просто искать нужные языки. Например:

SELECT ?language WHERE { 
    ?language dbpprop:iso "fr"@en . 
    ?language a dbpedia-owl:Language . 
} 

SPARQL results

Результаты

language 
http://dbpedia.org/resource/Canadian_French 
http://dbpedia.org/resource/New_England_French 
http://dbpedia.org/resource/French_language 
http://dbpedia.org/resource/Colonial_French 

Если вы хотите ?isocode переменную, связанную с "fr"@en, вы можете использовать пункт VALUES указать (и другие тоже, если вы хотите). Например .:

SELECT ?language ?isocode 
WHERE { 
    VALUES ?isocode { "fr"@en "fro"@en "fra"@en } 
    ?language dbpprop:iso ?isocode . 
    ?language a dbpedia-owl:Language . 
} 

SPARQL results

Если вы действительно хотите, чтобы фильтровать, вы все еще можете сделать это. Например .:

SELECT ?language ?isocode 
WHERE { 
    ?language dbpprop:iso ?isocode . 
    ?language a dbpedia-owl:Language . 
    FILTER (str(?isocode) = "fr" && langMatches(lang(?isocode), "EN")) 
} 

SPARQL results

+0

Спасибо большое! Ваши ссылки работают на меня. Неважно, что я только что написал, все работает! – anonymous1fsdfds

+0

@Claudia рада это слышать! Если он отвечает на ваш вопрос, подумайте [принять его] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work), чтобы другие пользователи знали, что он сработал. –