Graph 分析RDF图:某种关系的平均数
我是SPARQL的新手 我试图找到一种方法来分析RDF图,比如说一个主题的某个关系的平均数。 如果我们有数据的话Graph 分析RDF图:某种关系的平均数,graph,rdf,sparql,Graph,Rdf,Sparql,我是SPARQL的新手 我试图找到一种方法来分析RDF图,比如说一个主题的某个关系的平均数。 如果我们有数据的话 [Alice likes Money] [Bob has Money] [Bob likes Diving] [Bob likes Skiing] 每个节点“喜欢”的平均数量是多少(这里是:1.5) 我的第一次尝试是简单地编写一个脚本来迭代所有不同的对象,并查询每个对象
[Alice likes Money]
[Bob has Money]
[Bob likes Diving]
[Bob likes Skiing]
每个节点“喜欢”的平均数量是多少(这里是:1.5)
我的第一次尝试是简单地编写一个脚本来迭代所有不同的对象,并查询每个对象上的相似关系数
有没有一种方法可以直接在SPARQL中实现这一点?是的,您可以使用
分组方式和聚合来实现这类功能。请参阅技术规范中的,以了解此方面的概述
如果希望获得每个节点的喜好,可以这样做:
PREFIX : <http://example.org/ns#>
SELECT ?node (COUNT(*) AS ?likes)
WHERE
{
?s :likes ?node
}
GROUP BY ?node
这里我们再次使用COUNT(*)
来获得喜欢的总数,然后我们使用COUNT(DISTINCT?node)
来计算?节点
的不同值,然后我们可以简单地将?likeCount
除以?nodeCount
,得到每个节点的平均喜欢度
PREFIX : <http://example.org/ns#>
SELECT
(COUNT(*) AS ?likeCount)
(COUNT(DISTINCT ?node) AS ?nodeCount)
(?likeCount / ?nodeCount AS ?avgLikesPerNode)
WHERE
{
?s :likes ?node .
}