试图删除Individual会产生NullPointerException

时间:2014-04-25 12:46:52

标签: java rdf jena owl

我尝试从RDF文件中删除现有的个人,但我总是得到一个NullPointerException。我得到的个人就在那里,因为我可以打印出一处房产。有人可以告诉我我做错了吗?

final static String SN = "http://vaceta.pavo.uberspace.de/RDF/social-media.owl#";

InputStream in = context.getResourceAsStream("WEB-INF/resources/social-media.rdf");
OntModel model = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);
model.read(in, null);
in.close();

Individual user01 = model.getIndividual(SN + "User01");
model.remove(user01, null, (RDFNode) null);
model.remove(null, null, user01);

output = new FileOutputStream(context.getRealPath("/")+"WEB-INF/resources/social-media.rdf");
model.writeAll(output, "RDF/XML", null);
output.close();

堆栈跟踪:

enter image description here

1 个答案:

答案 0 :(得分:3)

您正在使用不允许空值的ModelCon.remove(s,p,o)。您想使用Model.removeAll(s,p,o)而不是允许空值并将它们用作通配符。以下是相应的Javadocs(重点已添加):

  

ModelCon.remove

Model remove(Resource s, Property p, RDFNode o)
     

从此模型中删除语句(s,p,o)并回答此模型。    s,p,o都不允许为null:对于通配符删除,请参阅   的removeAll

  

Model.removeAll

     

Model removeAll(Resource s, Property p, RDFNode r)

     

从此模型中删除所有匹配(s,p,o)的语句。