使用特定 属性 SPARQL 获取所有数据

Get all data with specific property SPARQL

我有简单的 RDF 数据集,具有以下值:用户、url、时间和 ip。我可以使用以下方式列出所有数据:

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

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

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 . },谢谢。如果您 post 将其作为答案,我会将其标记为已接受。

假设您的数据集由 class :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:,因为这可能导致其他人认为它是已经存在的 foaf "friend of a friend" 词汇表的一部分。 WHERE 关键字始终可以省略,在这种情况下不需要 DISTINCT 关键字,除非出现异常情况,例如多个图中包含相同的三元组。