Alk*_*ris 2 encoding sparql dbpedia virtuoso
我在DBpedia上运行查询,我收到一些结果显然有错误的编码和字符显示为问号,例如 -
http://dbpedia.org/resource/Bo?aziçi_University
Run Code Online (Sandbox Code Playgroud)
- 我希望看到的地方 -
http://dbpedia.org/resource/Bo%C4%9Fazi%C3%A7i_University
Run Code Online (Sandbox Code Playgroud)
在这里你可以找到实际的标题.
你可以在那里执行我的查询 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 . }
}
Run Code Online (Sandbox Code Playgroud)
难道我做错了什么?我是否必须对查询进行任何添加才能获得正确的结果?它是否与数据相关(基本上数据是错误的,所以无法做任何事情)?
我不认为你做错了什么.我认为您所看到的结果与Boğaziçi大学的结果相同 ,后者也显示在结果中.这可能只是数据中的一些噪音.如果你要求名字中有文字问号的实体,你会看到一堆.这是您的查询的简化版本(不使用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), "?"))
}
Run Code Online (Sandbox Code Playgroud)
您可以撤消该过滤器并简单地排除这些结果,我认为您最终会得到您想要的结果:
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), "?"))
}
Run Code Online (Sandbox Code Playgroud)