我尝试从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();
堆栈跟踪:
答案 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)的语句。