SPARQL DBPedia编码

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)

难道我做错了什么?我是否必须对查询进行任何添加才能获得正确的结果?它是否与数据相关(基本上数据是错误的,所以无法做任何事情)?

Jos*_*lor 5

我不认为你做错了什么.我认为您所看到的结果与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)

SPARQL结果

您可以撤消该过滤器并简单地排除这些结果,我认为您最终会得到您想要的结果:

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)

SPARQL结果