Apache Jena:删除模型中的所有数据

时间:2013-04-17 16:07:33

标签: java jena

我正在尝试使用以下类中的ClearModel()方法删除我输入到模型中的所有数据。

    public class JenaDatabaseHelper {

private Model model;
private Dataset dataset;

public Model getJenaModel(){
    if(model!=null){
        return model;
    }
    else{
        String directory = "JenaDatabase" ;
        try{
            dataset = TDBFactory.createDataset(directory);
            model = dataset.getNamedModel("DB");
            return model;
        }catch(Exception e){
            System.out.println("Error when retrieving model: "+e.getMessage());
        }              
    }
    return null;
}

public void SaveAndCloseModel(){
    if(model!=null && dataset!=null){
        model.commit();
        model.close();
        dataset.close();
    }
}

public void ClearModel(){
    if(model!=null && dataset!=null){
        model.removeAll();
        SaveAndCloseModel();
    }
}

但是当我重新启动应用程序并遍历语句时,没有删除任何内容。

1 个答案:

答案 0 :(得分:1)

我注意到如果ClearModel为空,model将默默无效。您可能希望在该条件上放置else分支以在该情况下打印警告。例如,如果您创建新的JenaDatabaseHelper实例并且不首先调用getJenaModel()初始化实例变量,则可能会发生这种情况。

事实上,考虑到有未初始化变量的风险,我个人会将getJenaModel的功能放入构造函数中。或者,您可以通过getter方法访问model来懒惰地评估它们,这将首先检查model是否已初始化。