Język w SPARQL
Moja przygoda z SPARQL zacząłe się od DBpedia.org – sformalizowanej wersji Wikipedii.
Chciałem zrobić coś naprawdę prostego – wydobyć wszystkie pojęcia, która miałyby określoną wartość atrybuty rdfs:label
.
Szybko jednak okazało się, że proste zapytanie, które powinno zwrócić obiekty o etykiecie ‘Berlin’:
SELECT * WHERE { ?x rdfs:label "Berlin" }
nie daje żadnych sensownych rezultatów. Domyślałem się, że problem leży w tym, że predykat rdfs:label
może posiadać wiele wartości, dla wielu języków wykorzystywanych w Wikipedii. Niestety znalezienie
odpowiedzi na pytanie, jak określić język dla atrybuty nie było całkowicie banalne.
Chociaż informacja ta zawarta jest w opisie SPARQL,
na stronach w3.org niestety uszła mojej uwadze w trakcie pobieżnego czytania.
Dopiero dalsze googlowanie przywiodło mnie do następującego rozwiązania:
SELECT * WHERE { ?x rdfs:label "Berlin"@en }
Określenie języka poprzez dodanie za łańcuchem znaków małpy oraz jego skrótu, dało pożądany rezultat, tzn. zwróciło wszystkie obiekty, których etykieta w języku angielskim to “Berlin”. Ku mojemu zdziwieniu, rezultatów jest wiele, o czy można przekonać się samemu.