首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sparql 1.1查询中的foaf和count

sparql 1.1查询中的foaf和count
EN

Stack Overflow用户
提问于 2013-07-11 20:44:57
回答 1查看 277关注 0票数 3

我是SPARQL的初学者,如果您能帮助我,那就太好了。。我有一个这样的RDF文档:

代码语言:javascript
复制
  @prefix foaf: <http://xmlns.com/foaf/0.1/> .
  @prefix lb:   <http://example.org/lastfm/> .

  lb:bob     foaf:knows      lb:user2, lb:user3, lb:user4 ;
       foaf:age        25 ;
       lb:listenedTo   lb:track1, lb:track2 ;
       lb:topArtist    lb:artist1, lb:artist2 .        

  lb:user2   foaf:knows      lb:user5, lb:user6 ;
       foaf:age        40 ;
       lb:listenedTo   lb:track1, lb:track2, lb:track3 ;  
       lb:topArtist    lb:artist2, lb:artist4 .        

  lb:user3   foaf:knows      lb:user5, lb:bob, lb:user6 ;
       foaf:age        19 ;
       lb:listenedTo   lb:track2, lb:track3, lb:track4 ;
       lb:topArtist    lb:artist2, lb:artist3 .      

  lb:user4   lb:listenedTo   lb:track2, lb:track3, lb:track4 ;
       foaf:age        61 ;
       lb:topArtist    lb:artist3, lb:artist4, lb:artist5 .     

  lb:user5   foaf:knows      lb:user7 ;
       foaf:age        23 ;
       lb:topArtist    lb:artist1, lb:artist3 .

我想要找到所有可以从lb:bob访问的用户,最多跟随foaf:knows 3次,并且至少听过两首曲子。我写了一个这样的查询:

代码语言:javascript
复制
  PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
  prefix foaf: <http://xmlns.com/foaf/0.1/>
  prefix lb:   <http://example.org/lastfm/>

  select ?user
  where
  {
   lb:bob foaf:knows | foaf:knows/foaf:knows| foaf:knows/foaf:knows/foaf:knows ?user.
    ?user lb:listenedTo ?tracks
     minus{lb:bob lb:listenedTo ?track}
      filter (?tracks count(*)>=2)
  }

但是这个错误:

代码语言:javascript
复制
Encountered " "count" "count "" at line 12, column 23. Was expecting one of:
 "not" ...
 "in" ...
 <INTEGER_POSITIVE> ...
 <DECIMAL_POSITIVE> ...
 <DOUBLE_POSITIVE> ...
 <INTEGER_NEGATIVE> ...
 <DECIMAL_NEGATIVE> ...
 <DOUBLE_NEGATIVE> ...
 ")" ...
 "=" ...
 "!=" ...
 ">" ...
 "<" ...
 "<=" ...
 ">=" ...
 "||" ...
 "&&" ...
 "+" ...
 "-" ...
 "*" ...
 "/" ...

我知道我的查询有很多问题,你能帮我重写一下吗?

EN

回答 1

Stack Overflow用户

发布于 2013-07-11 21:55:49

这样如何:

代码语言:javascript
复制
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix foaf: <http://xmlns.com/foaf/0.1/>
prefix lb:   <http://example.org/lastfm/>

select ?user
where
{
  lb:bob foaf:knows | foaf:knows/foaf:knows| foaf:knows/foaf:knows/foaf:knows ?user.
  ?user lb:listenedTo ?tracks
}
group by ?user
having (count(?tracks) > 2)

您在原始查询中有minus,但我不确定。你是不是在尝试删除lb:bob作为?user的绑定?filter (?user != lb:bob)会阻止它的。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17593742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档