2014-02-22 33 views
0

我對SparQL非常陌生,目前我正在努力獲得正確的結果,我已經在過去3天和廣泛的Google搜索結束時對此進行了實驗我覺得是時候尋求幫助了。在SPARQL中顯示過濾器後出現重複結果

我遇到的問題是查詢結果正在顯示,但我只想顯示帶有模塊「語義Web」的大學名稱,但即使使用當前的FILTER結果顯示所有三個大學只有兩個「肯特大學和曼徹斯特大學」有這個特定的模塊。我希望有人能夠帶領我朝着正確的方向前進,因爲我不相信坎特伯雷基督教會的大學應該甚至被展示出來,更不用說它已經有了這個模塊。

我目前的嘗試代碼:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX a: <https://dl.dropboxusercontent.com/u/270116418/schema.rdf> 
SELECT DISTINCT ?University ?Modules 
WHERE { 
?u rdf:type a:University. ?c rdf:type a:Courses. ?m rdf:type a:Modules. 
?u a:uniName ?University. ?c a:coursesName ?Courses. ?m a:moduleName ?Modules . 
FILTER regex(?Modules, "Semantic") 
} 

的直接鏈接低於:

http://librdf.org/query?uri=http%3A%2F%2Fdl.dropboxusercontent.com%2Fu%2F270116418%2FAssignment_1.rdf+http%3A%2F%2Fdl.dropboxusercontent.com%2Fu%2F270116418%2FAssignment_1_2.rdf+http%3A%2F%2Fdl.dropboxusercontent.com%2Fu%2F270116418%2FAssignment_1_3.rdf&query=PREFIX+rdf%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F1999%2F02%2F22-rdf-syntax-ns%23%3E+%0D%0A%0D%0APREFIX+a%3A+%3Chttps%3A%2F%2Fdl.dropboxusercontent.com%2Fu%2F270116418%2Fschema.rdf%3E%0D%0A%0D%0A%0D%0ASELECT+DISTINCT+%3FUniversity+%3FModules%0D%0AWHERE+{%0D%0A%3Fu+rdf%3Atype+a%3AUniversity.+%3Fc+rdf%3Atype+a%3ACourses.+%3Fm+rdf%3Atype+a%3AModules.%0D%0A%3Fu+a%3AuniName+%3FUniversity.+%3Fc+a%3AcoursesName+%3FCourses.+%3Fm+a%3AmoduleName+%3FModules+.+FILTER+regex%28+%3FModules%2C+%22Semantic%22%29%0D%0A}%0D%0AORDER+BY+%3FUniversity&language=sparql&Run+Query=Run+Query&.cgifields=json&.cgifields=raw 

謝謝你在前進,

Chris.H

回答

2

你有一個模式斷開的部分。

從模塊追溯,你只能到?m。

?u rdf:type a:University. 
?c rdf:type a:Courses. 
?u a:uniName ?University. 

如果它在(?u,?c)上有多個匹配,那麼它會將?m和?模塊的匹配倍增,導致重複。

SELECT *執行您的查詢以查看完整的詳細信息。

+0

謝謝安迪,這對我的進步和解決這個問題非常有幫助。 –