2016-04-24 103 views
0

一個名爲模型假設this introduction指出,使用命名模型比使用默認模型更好的做法,我想一個名爲模型添加到數據集:創建耶拿

Dataset dataset = TDBFactory.createDataset("MyDataset"); 
System.out.println(dataset.containsNamedModel("MyNewModel")); 
Model MyNewModel = ModelFactory.createDefaultModel(); 
dataset.begin(ReadWrite.WRITE); 
dataset.addNamedModel("MyNewModel", MyNewModel); 
dataset.commit(); 
System.out.println(dataset.containsNamedModel("MyNewModel")); 

但這返回

false 
false 

(所以顯然不會增加模型!)。我看了一下the docs,還有一個createMethod(String name)method。我嘗試過使用它,但是因爲它在Interface中,當我嘗試實例化時,java會抱怨,並且文檔不會顯示哪些類實現了哪個接口。

這導致幾個問題:

  1. 是否實際上最佳實踐數據集中使用命名模式,而不是默認的模式?
  2. 如何調用createModel方法?在更多verbose documentation它說,ModelFactory包含一個方法createFileModelMaker(String) - 但java docs沒有提及這種方法,並試圖稱它爲可預測的導致The method createFileModelMaker(String) is undefined for the type ModelFactory

回答

1

MyNewModel是空的,所以沒有什麼可添加的。 addNamedModel表示將一個圖形的內容複製到數據集中的一個named上。

在TDB中,命名圖被保存爲四元組(圖,主題,謂詞,對象)。沒有單獨的圖表管理。如果指定圖形沒有四邊形,則它不在數據集中。

+0

「命名圖」與「命名模型」相同嗎? – ChrisW

+1

是的。 「模型」和「圖形」幾乎是一回事。 「Model」是2004年時間刻度RDF規範中使用的詞,這也是它在API中的原因。 – AndyS