2016-04-23 58 views
2

我通過使用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://stackoverflow.com/questions/19502398/sparql-update-example-for-updating-more-than-one在單個查詢中),它顯示「替換給定主題的三元組的更新」。 –

回答

2

首先,要進行適當的時間測量,請刪除與更換本身無關的任何內容,特別是普通打印和漂亮打印,您不需要它們。如果您需要某個進度指示器,請每隔N步寫一個簡短消息(例如一個點)到日誌文件中。

避免內存過度消耗。我不知道你的圖形在內部是如何看起來的,但是最好在沒有創建平行圖形結構的情況下進行替換。檢查過程中的內存使用情況,如果程序沒有空閒RAM,則遇到問題,所有進程都會放慢速度。如果您無法修改現有圖形內存不足,爲了進行測量,只需避免創建第二個圖形,即使這樣的替換已丟失並因此無用。

如果沒有任何幫助,請退後一步。如果尚未使用python re或專用於批處理文本處理的文本工具(如sed)解析文件,則可以在舞臺上執行替換。