我试图从我的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();堆栈跟踪:

发布于 2014-04-25 14:22:19
您使用的是不允许空的ModelCon.remove(s,p,o)。您希望使用Model.removeAll(s,p,o),这确实允许空值,并将它们作为通配符使用。下面是相应的Javadocs (添加了重点):
ModelCon.remove 模型删除(资源s,属性p,RDFNode o) 从这个模型中删除语句(s,p,o)并回答这个模型。 s,p,o都不允许为null:关于通配符删除,请参见removeAll。Model.removeAll
Model removeAll(Resource s, Property p, RDFNode r)从该模型中删除与 (s,p,o)匹配的所有语句。
https://stackoverflow.com/questions/23293602
复制相似问题