简单SPARQL查询不工作

简单SPARQL查询不工作,sparql,semantic-web,Sparql,Semantic Web,我是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的新手。我在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)   
}  
前缀foaf:
选择“书本”,选择“书本2”
哪里{?book foaf:starWith?f1。
?图书foaf:以f2结尾。
?第二册foaf:以f3开头。
?第2册foaf:以?f4结尾。
过滤器正则表达式(?f1,?f3)
}  
对不起,我是新来的

  • 查询中有一个输入错误,该属性称为startWith
  • 不要将现有的本体/名称空间用于您自己的本体,即不要使用RDF、RDFS、OWL、FOAF。相反,使用您自己的名称空间
  • 投影变量之间不允许有逗号。至少不是从SPARQL规范。一些三元组存储确实支持一些扩展语法,但我始终坚持使用标准SPARQL
  • 正则表达式是完全错误的。不确定要用它做什么,但这用于字符串匹配。一个
    过滤器(?book!=book2&&f1=?f3&&f2=?f4)
    就足够了
  • 查询:

    前缀myNs:
    选择?book1?book2
    哪里
    {?book1 myNs:startWith?s1。
    ?第1册年份:以?e1结尾。
    ?第二册年份:开始第二册。
    ?第2册年份:以?e2结尾
    过滤器(?book1!=?book2&&s1=?s2&&e1=?e2)
    }
    
    好的,谢谢。但我想知道这个问题是怎么回事。如何在SPARQL中比较多个类?我不明白。根据给定的查询,at返回具有相同开始和结束的不同书籍-无论结束和开始的值是多少