python rdflib transitive query(Python rdflib可传递查询)
本文介绍了Python rdflib可传递查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我是使用rdflib的新手,我的问题也很简单。我有几个n-三元组文件,其中包含相当多的数据量,虽然每个文件在其主题中具有相同的域,但对象中的域对于每个文件是不同的。现在我想输入一个或多个文件,并将它们与数据集中的所有其他文件进行比较,以获得包含相同主题的三元组:
[selected file]
a owl:sameAs b
[other files]
a owl:sameAs c
a owl:sameAs d
应产生输出:
b owl:sameAs c
b owl:sameAs d
我目前的方法非常幼稚且耗时太长,因为我迭代所选文件中的所有三元组,它会检查每隔一个三元组是否包含相同的主语和谓词。
...
for mainGraph in mainGraphs:
for s,p,o in mainGraph:
for graph in graphs:
for s1,p1,o1 in graph:
if s == s1 and p == p1:
backlinks.add( (o, OWL.sameAs, o1) )
...
我尝试插入SPARQL查询,但也不起作用:
...
for mainGraph in mainGraphs:
for graph in graphs:
union = mainGraph + graph
qres = union.query(
"""SELECT DISTINCT ?x ?y
WHERE
{
?x owl:sameAs+ ?y .
}""")
...
我的问题是,是否有更快、更简单的方法可以做同样的事情。
任何帮助都将不胜感激。
推荐答案
查看了更多的rdflib文档后,我想出了以下解决方案:
...
for mainGraph in mainGraphs:
for s,p,o in mainGraph.triples( (None, OWL.sameAs, None) ):
for graph in graphs:
for s1,p1,o1 in graph.triples( (s,p,None) ):
backlinks.add( (o1, OWL.sameAs, o) )
...
它要快得多。如果有人有一个更快的解决方案,我将非常感激,如果他们会张贴它。
这篇关于Python rdflib可传递查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:Python rdflib可传递查询
基础教程推荐
猜你喜欢
- PANDA VALUE_COUNTS包含GROUP BY之前的所有值 2022-01-01
- 修改列表中的数据帧不起作用 2022-01-01
- Plotly:如何设置绘图图形的样式,使其不显示缺失日期的间隙? 2022-01-01
- 在同一图形上绘制Bokeh的烛台和音量条 2022-01-01
- 包装空间模型 2022-01-01
- 求两个直方图的卷积 2022-01-01
- 使用大型矩阵时禁止 Pycharm 输出中的自动换行符 2022-01-01
- 在Python中从Azure BLOB存储中读取文件 2022-01-01
- PermissionError: pip 从 8.1.1 升级到 8.1.2 2022-01-01
- 无法导入 Pytorch [WinError 126] 找不到指定的模块 2022-01-01
