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

获取具有特定属性SPARQL的所有数据,sparql,jena,apache-jena,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. } 我刚刚开始与Jen

我有一个简单的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
是我自己定义的前缀。我挣扎着让查询正常工作,不知道自己在做什么。这是我还没有清理的东西。

最后,我使用了query
SELECT DISTINCT*WHERE{?u foaf:name USER\u name\u LITERAL.?u?p?o.}
这是您建议的,谢谢。如果您将其作为答案发布,我会将其标记为已接受。

假设您的数据集包含类记录
:记录
,带有字段
: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“朋友的朋友”词汇表的一部分。WHERE关键字总是可以省略,在这种情况下不需要DISTINCT关键字,除非出现异常情况,例如同一个三元组包含在多个图形中。

RDF中的资源由URI标识,因此您的用户也是如此<代码>选择DISTINCT*WHERE{?p?o}
。SPARQL查询重复使用变量名,以便它们三重模式相连,并且通常构建一个图。第二个查询由两个未连接的三重模式组成。不知道
foaf:user
应该是什么,但在foaf中没有这样的属性
foaf:name
是一个公共属性:如果您想通过用户名识别用户:
选择DISTINCT*其中{u foaf:name user\u name\u LITERAL。?u?p?o.}
可能不合适,如果您允许使用相同名称的多个用户。也就是说,返回了多个用户及其所有信息。感谢您的回答,这非常有帮助,因为它为我提供了更多的见解。在我的示例中,整个
foaf
就是我开始学习SPARQL时所做的一堆乱七八糟的事情。在当前版本中,我已经修复了它。当我使用AKSW解决方案时,如果他决定将他的评论作为答案发表,我会等待,但如果他不这样做,我会接受你的答案,因为这也很有帮助,即使我的问题已经解决了。比你多一次。