使用特定 属性 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 关键字,除非出现异常情况,例如多个图中包含相同的三元组。
我有简单的 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 关键字,除非出现异常情况,例如多个图中包含相同的三元组。