2016-04-07 2 views
2

Я запускаю запрос в DBpedia, и я получаю некоторые результаты, которые, по-видимому, имеют неправильную кодировку и символы, которые отображаются как вопросительные знаки, например. -SPARQL DBPedia encoding

http://dbpedia.org/resource/Bo?aziçi_University 

- где я ожидал увидеть -

http://dbpedia.org/resource/Bo%C4%9Fazi%C3%A7i_University 

Here вы можете найти фактическое название.

Вы можете выполнить мой запрос на http://live.dbpedia.org/sparql

PREFIX yago: <http://dbpedia.org/class/yago/> 
PREFIX schema: <http://schema.org/> 
PREFIX dbpedia: <http://dbpedia.org/> 

SELECT ?school 
WHERE 
{ 
    { ?school rdf:type schema:EducationalOrganization . } 
    UNION 
    { ?school rdf:type yago:EducationalInstitution108276342 . } 
    UNION 
    { ?school rdf:type yago:College108278169 . } 
    UNION 
    { ?school dbpedia:type dbr:Public_university . } 
} 

Я делаю что-то не так? Должен ли я делать какие-либо дополнения к моему запросу, чтобы получить правильный результат? Связано ли это с данными (в основном данные ошибочны, поэтому ничего нельзя сделать)?

+0

Обратите внимание, что это DBpedia LIVE, что не совсем то же самое, что DBpedia. Конечной точкой DBpedia является http://dbpedia.org/sparql. –

+0

Да, я знаю. В прошлый раз, когда я попробовал, у меня была та же проблема с конечной точкой, которую вы предоставили. – alkis

+1

Часто полезно поднимать эту проблему непосредственно участвующим командам, в этом случае оптимально через [DBpedia Discussion] (https://lists.sourceforge.net/lists/listinfo/dbpedia-discussion) и [Virtuoso Users ] (https://lists.sourceforge.net/lists/listinfo/virtuoso-users/) списки рассылки. – TallTed

ответ

5

Я не думаю, что вы делаете что-то неправильно. Я думаю, что результат, который вы видите, тот же, что и Boğaziçi University, который также отображается в результатах. Вероятно, это всего лишь некоторый шум в данных. Если вы попросите сущности, которые имеют буквальный знак вопроса в своих именах, вы увидите кучу. Вот упрощенная версия вашего запроса (не использует union), который включает только те объекты с ? в их URI:

SELECT DISTINCT ?school WHERE 
{ 
    values ?type { schema:EducationalOrganization 
       yago:EducationalInstitution108276342 
       yago:College108278169 
       dbr:Public_university } 
    values ?hasType { rdf:type dbpedia:type } 
    ?school ?hasType ?type . 

    filter(contains(str(?school), "?")) 
} 

SPARQL results

Вы можете отменить это фильтр и просто исключить эти результаты, и я думаю, что вы будете в конечном итоге с тем, что вы хотите:

SELECT DISTINCT ?school WHERE 
{ 
    values ?type { schema:EducationalOrganization 
       yago:EducationalInstitution108276342 
       yago:College108278169 
       dbr:Public_university } 
    values ?hasType { rdf:type dbpedia:type } 
    ?school ?hasType ?type . 

    filter(!contains(str(?school), "?")) 
} 

SPARQL results

Смежные вопросы