我的数据模式是:<user> <:bought> <book>
我正在尝试编写一个推荐查询,用于向用户推荐新书。例如。如果用户u_a已经购买了图书b_1和b_2。我发现所有购买了b_1和b_2的用户(u_a除外),以及其他用户购买了其他书籍( b_1和b_2除外)。
SELECT ?otherbooks (COUNT(*) AS ?t)
FROM <https://book_store1>
WHERE {
<https://book_store1/userId/1495865> <https://book_store1/bought> ?booksbought .
FILTER (?user != <https://book_store1/userId/1495865>)
?user <https://book_store1/bought> ?booksbought .
FILTER (?otherbooks != ?booksbought)
?user <https://book_store1/bought> ?otherbooks .
}
GROUP BY ?otherbooks
ORDER BY DESC (?t)
LIMIT 10在WHERE条款的第三行,即?user <https://book_store1/bought> ?booksbought .,我想写DISTINCT用户,即u_b和u_c可能同时购买了b_1和b_2。因此,我希望在随后的WHERE子句中将单个值作为u_b传递,并将u_c作为?user传递
发布于 2019-08-20 11:30:25
调整您的计数以查看唯一用户,如下所示:
SELECT ?otherbooks (COUNT(DISTINCT ?user) AS ?t)https://stackoverflow.com/questions/57400033
复制相似问题