我是SPARQL的新手。我在Protege中创建了一个本体,并且有两个类:
Book
Page
所以..在“按班级分类”我有这个
Book1 startWith page1
Book1 endWith page2
Book2 startWith page2
Book2 endWith page5
Book3 startWith page1
Book3 endWith page2
此外page1
的数据属性值为1
page2 with value 2
page5 with value 2
所以..我想制作一个SPARQL查询,它返回所有具有该开头的书籍在同一页面中并以同一页面结束。
现在这是我的SPARQL查询,但无效。
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?book, ?book2
WHERE { ?book foaf:starWith ?f1 .
?book foaf:endWith ?f2 .
?book2 foaf:starWith ?f3 .
?book2 foaf:endWith ?f4 .
FILTER regex(?f1, ?f3)
}
抱歉,我是新手
答案 0 :(得分:4)
FILTER(?book != book2 && ?f1 = ?f3 && ?f2 = ?f4)
就足够了查询:
PREFIX myNs: <http://my-namespace.org/>
SELECT ?book1 ?book2
WHERE
{ ?book1 myNs:startWith ?s1 .
?book1 myNs:endWith ?e1 .
?book2 myNs:startWith ?s2 .
?book2 myNs:endWith ?e2
FILTER (?book1 != ?book2 && ?s1 = ?s2 && ?e1 = ?e2)
}