2016-04-07 17 views
2

DBpedia ile ilgili bir sorgu çalıştırıyorum ve soru işaretleri olarak görünen yanlış kodlamalara ve karakterlere sahip görünen bazı sonuçları alıyorum. -SPARQL DBPedia kodlaması

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

- görmeyi bekliyoruz -

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

Here gerçek başlığı bulabilirsiniz.

Benim yanlış mı yapıyorum 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 . } 
} 

benim sorgu yürütebilir? Doğru sonucu almak için sorguma herhangi bir ekleme yapmak zorunda mıyım? Veri ile ilgili mi (temelde veriler yanlıştır, bu yüzden hiçbir şey yapılamaz)?

+0

Bunun DBpedia LIVE olduğunu ve DBpedia ile aynı olmadığını unutmayın. DBpedia'nın son noktası http://dbpedia.org/sparql. –

+0

Evet Biliyorum. Son denediğimde, sağladığınız son nokta ile aynı problemi yaşadım. – alkis

+1

Bu tür bir sorunu doğrudan ilgili ekiplere yükseltmek yararlıdır, bu durumda [DBpedia Tartışma] (https://lists.sourceforge.net/lists/listinfo/dbpedia-discussion) ve [Virtuoso Users ] (https://lists.sourceforge.net/lists/listinfo/virtuoso-users/users) e-posta listeleri. – TallTed

cevap

5

Yanlış bir şey yaptığınızı düşünmüyorum. Gördüğünüz sonucun, sonuçlarda da görünen Boğaziçi University ile aynı olduğunu düşünüyorum. Muhtemelen verilerde sadece bir miktar gürültü var. Adlarında gerçek soru işareti olan varlıkları soruyorsanız, bir demet göreceksiniz. Sorgunuzun basitleştirilmiş bir sürümü (union kullanılmıyor), yalnızca olan varlıkları içerir? Onların URI'de:

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

söz konusu filtreyle tersine çevirmek ve sadece bu sonuçları hariç, ben ne istediğini ile bitireceğiz düşünebiliriz

:

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