批量编辑rdflib中三元组的主题

问题描述:

我通过使用rdflib-jsonld解析来自数据库的记录来创建一个rdflib图。但是,三元组的主题从url中缺少/。要添加它,我用下面的代码:批量编辑rdflib中三元组的主题

for s,p,o in graph1: 
      print 'parsing to graph2. next step - run query on graph2' 
      pprint.pprint((s,p,o)) 
      s = str(s) 
      s1 =s.replace('https:/w','https://w') 
      s = URIRef(s1) 
      graph2.add((s,p,o)) 

这一步需要很长的时间(几个小时),因为大量的图形三元组的运行。我怎样才能减少所花费的时间?不是循环遍历每个元素,我如何修改主题?

+0

如果您可以运行SPARQL查询,那么您可以使用INSERT/DELETE(例如,如博客文章中所述[SPARQL:更新owl:Class in the place的URI](http://semanticarts.com/博客/ SPARQL更新类-URI就地/))。 [SPARQL更新示例在单个查询中更新多个三元组]的答案中有一个示例(http://*.com/questions/19502398/sparql-update-example-for-updating-more-than-one在单个查询中),它显示“替换给定主题的三元组的更新”。 –

首先,要进行适当的时间测量,请删除与更换本身无关的任何内容,特别是普通打印和漂亮打印,您不需要它们。如果您需要某个进度指示器,请每隔N步写一个简短消息(例如一个点)到日志文件中。

避免内存过度消耗。我不知道你的图形在内部是如何看起来的,但是最好在没有创建平行图形结构的情况下进行替换。检查过程中的内存使用情况,如果程序没有空闲RAM,则遇到问题,所有进程都会放慢速度。如果您无法修改现有图形内存不足,为了进行测量,只需避免创建第二个图形,即使这样的替换已丢失并因此无用。

如果没有任何帮助,请退后一步。如果尚未使用python re或专用于批处理文本处理的文本工具(如sed)解析文件,则可以在舞台上执行替换。