【发布时间】:2020-09-09 09:40:23
【问题描述】:
因为我有一个 DBpedia 查询,我想使用 PageRank 算法对这些结果进行排名。
对于“Machine_learning”的概念,通过使用下面的 SPARQL 查询,我可以找出 DBpedia 中的所有 ParentNodes、ChildNodes 和 SiblingNodes。
select * where {
{ ?childNodes skos:broader <http://dbpedia.org/resource/Category:Machine_learning> . ?childNodes skos:broader ?siblingConceptsFormChildNodes}
UNION
{<http://dbpedia.org/resource/Category:Machine_learning> skos:broader ?parentNodes . ?siblingConceptsFormParentNodes skos:broader ?parentNodes}
}
对于可视化,主题层次结构如下: Regulated concept map
您可能会发现主题层次结构基于 SKOS:broader 和 SKOS:narrower 属性。
我的目的是通过 PageRank 对主题层次结构中存在的所有节点进行排名。上述查询的结果是有限的。
我还发现了这个似乎与我的问题有关的问题: How to use DBpedia properties to build a topic hierarchy?
不过,我觉得我们之间的做法有点不同。
我还为上面的主题层次结构调整了PageRank算法:
提前谢谢你!
【问题讨论】:
-
您现在有具体问题吗?我的意思是,您从之前的问题中获得的 SPARQL 查询确实返回了您想要的。那你在这里问什么?
-
感谢您的评论。我将计算这些节点的重要性,以便我询问是否可以通过 sparqlwrapper 使用 python 来实现它?
-
可能吗?我的意思是,为什么不 - 您只需要运行数千个计算计数的 SPARQL 查询,对吗?这肯定需要很长时间。您还应该将 DBpedia 数据集加载到本地三重存储中。我怀疑使用共享 DBpedia 端点是运行重负载的最佳服务
-
您还应该查看文献,我知道至少有一些方法可以计算 DBpedia 的 pagerank(以及其他分数)。此外,一些三重商店确实将这些页面排名计算作为附加功能。例如 GraphDB(RDFRank) 和 Virtuoso 确实有这样的功能来计算基于链接的分数。这肯定比通过 HTTP 运行您需要的所有 SPARQL 查询更有效。我猜批量查询很可能会超时
-
我不想运行数千个 SPARQL 查询。我只是针对特定关键字/概念构建主题层次结构,并计算主题层次结构中包含的节点的所有重要性。非常感谢您提供帮助的 cmets!我将使用 python 尝试一下。
标签: python sparql dbpedia pagerank sparqlwrapper