获取具有特定属性SPARQL的所有数据

时间:2016-09-27 21:01:57

标签: sparql jena apache-jena

我有简单的RDF数据集,其中包含以下值:user,url,time和ip。我可以使用以下方式列出所有数据:

SELECT DISTINCT * WHERE { ?s ?p ?o }

但现在我需要列出特定用户的所有数据。如果查询中的数据与上述查询中的数据格式相同,我将非常感激,但这不是必需的。
我试过这个并对此进行了一些修改,但似乎没有任何修改:

SELECT DISTINCT * WHERE { ?s ?p ?o. ?u foaf:user username. }

我刚刚开始使用Jena和SPARQL,我们非常感谢任何帮助。提前致谢。

编辑:@AKSW foaf:user有效,因为foaf是我自己定义的前缀。我努力让查询工作,并且不知道我在做什么。这是我还没有收拾的东西 我最后使用了你建议的查询SELECT DISTINCT * WHERE {?u foaf:name USER_NAME_LITERAL . ?u ?p ?o . },谢谢。如果您将其作为答案发布,我会将其标记为已接受。

1 个答案:

答案 0 :(得分:1)

假设您的数据集包含类:Record的记录,其中包含字段:user:url:time:ip

SELECT * { ?r   ?p      ?o;
                 a      :Record;
                :user   ?u.
           ?u   :name "your user name".
          }

或者,假设您知道用户的URI是:user123:

SELECT * { ?r   ?p      ?o;
                 a      :Record;
                :user   :user123.
          }

注意:这是对AKSW评论的总结。我使用默认前缀:而不是foaf:,因为这可能导致其他人认为它是已经存在的朋友的一部分"朋友的朋友"词汇。在这种情况下,WHERE关键字总是可以省略,并且DISTINCT关键字不是必需的,除非在多个图表中包含相同的三元组等异常情况。