SPARQL-查找具有最相似属性的对象
假设有一个RDF数据库中的人,每个人都有许多三元组来定义此人的朋友(很多人都是SPARQL-查找具有最相似属性的对象,sparql,rdf,semantic-web,linked-data,Sparql,Rdf,Semantic Web,Linked Data,假设有一个RDF数据库中的人,每个人都有许多三元组来定义此人的朋友(很多人都是'person'x:hasFriend'otherPerson')。我怎样才能找到拥有最相似朋友的人?我是SPARQL的新手,这似乎是一个非常复杂的查询 基本上,结果将是一个从具有最相似的朋友列表的人(到查询中指定的人)开始的人的列表,然后向下到具有最不相似的朋友列表的人的列表 假设我在这个查询中搜索person1,结果如下: person2-300个相同的朋友 person30-245个相同的朋友 person18-
'person'x:hasFriend'otherPerson'
)。我怎样才能找到拥有最相似朋友的人?我是SPARQL的新手,这似乎是一个非常复杂的查询
基本上,结果将是一个从具有最相似的朋友列表的人(到查询中指定的人)开始的人的列表,然后向下到具有最不相似的朋友列表的人的列表
假设我在这个查询中搜索person1
,结果如下:
person2
-300个相同的朋友person30
-245个相同的朋友person18
-16个相同的朋友等等。如果你采用我的答案中的方法(这可能被认为是重复的),你会得到如下结果:
select?otherPerson(将(?friend)计算为?numFriends),其中{
:人1:有朋友?朋友?--人1有朋友,朋友。
其他人:有朋友?朋友?--其他人也是。
}
按其他人分组——每个其他人一个结果行,
按desc(?numFriends)#排序——按普通朋友的数量排序。
如果确实需要,可以使用反向属性路径来缩短查询模式:
select?otherPerson(将(?friend)计算为?numFriends),其中{
#--有些朋友是两个人的朋友:一个人和另一个人。
?friend^:hasFriend:person1,?其他人。
}
按其他人分组——每个其他人一个结果行,
按desc(?numFriends)#排序——按普通朋友的数量排序。
我认为的答案可能会提供一个答案。答案中的最后一个SPARQL查询“[使用]公共属性的数量作为相似性的度量。”Man非常感谢。是的,我试着在谷歌上寻找帮助,但我找不到任何东西,因为我不知道该问什么。@Fabis是的,有些东西并不总是超级难,但如果没有一个词来描述它们,它们可能真的很难搜索。