0

我对 SparQL 非常陌生,目前真的很难获得正确的结果来显示,我在过去的 3 天里对此进行了试验,在广泛的谷歌搜索结束时,我觉得是时候寻求帮助了。

我遇到的问题是查询结果正在显示,但是我只想显示带有“语义网”模块的大学名称,但是即使使用当前的过滤器,结果也显示了所有三所大学,只有两所其中“肯特大学和曼彻斯特大学”具有该特定模块。我希望有人能够引导我走向正确的方向,因为我不相信坎特伯雷基督教会大学甚至应该展示,更不用说展示它有那个模块了。

我当前尝试的代码:

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

先感谢您,

克里斯·H

4

1 回答 1

2

您有一个包含断开部分的模式。

从 ?Modules 追溯,您只能到达 ?m。

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

如果在 (?u, ?c) 上有多个匹配项,那么它将增加 ?m 和 ?module 的匹配项,从而导致重复。

执行您的查询SELECT *以查看完整的详细信息。

于 2014-02-22T17:48:20.690 回答