簡體   English   中英

SPARQL DBPedia編碼

[英]SPARQL DBPedia encoding

我在DBpedia上運行查詢,並且收到一些結果,這些結果顯然具有錯誤的編碼和顯示為問號的字符,例如-

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

-我希望看到的地方-

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

在這里您可以找到實際標題。

您可以在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 . }
}

難道我做錯了什么? 是否需要對查詢進行任何補充才能獲得正確的結果? 它與數據相關嗎(基本上是錯誤的數據,所以無能為力)?

我認為您沒有做錯任何事情。 我認為您所看到的結果與BoğaziçiUniversity相同,后者也顯示在結果中。 可能只是數據中有些雜音。 如果您要求名稱中帶有文字問號的實體,則會看到一堆。 這是查詢的簡化版本(不使用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結果

您可以反轉該過濾器,並簡單地排除那些結果,我想您最終會得到想要的結果:

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結果

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM