2016-05-29 4 views
0

У меня есть запрос SPARQL, который возвращает столицы Европы и их население. Запрос выглядит так:SPARQL Query final label

select ?s ?pop 
where { 
    ?s <http://dbpedia.org/ontology/populationTotal> ?pop . 
    ?s a <http://dbpedia.org/ontology/place> 
} 

В этом состоянии он возвращает названия городов в следующей форме: например. "<http://dbpedia.org/resource/London>", и я хочу отображать только London в этом случае. Итак, есть ли способ, которым я могу сказать SPARQL, что я хочу только финальную метку?

Я запрашивая против этой конечной точки: https://rdf.s4.ontotext.com/4730361296/demo01/repositories/test01

ответ

0

Советов здесь похожи на другие вопросы - использовать SPARQL для проверки данных. Таким образом, сначала попробуйте этот запрос, чтобы увидеть, если есть какие-либо свойства ярлыка, определенные:

select * 
where { 
    ?s <http://dbpedia.org/ontology/populationTotal> ?pop . 
    ?s a <http://dbpedia.org/ontology/place> . 
    ?s ?p ?o . 
} 

В этом случае вы обнаружите, что никакие свойства ярлыка не определены для place определений классов. При желании вы можете взять локальное имя - текст после последней косой черты (или хэша) в качестве имени. Попробуйте этот запрос:

select * 
where { 
    ?s <http://dbpedia.org/ontology/populationTotal> ?pop . 
    ?s a <http://dbpedia.org/ontology/place> . 
    BIND(REPLACE(xsd:string(?s), ".*[/#]", "") AS ?label) 
}