文字列として送信された Jena ルールを以下のメソッドに追加しようとしています。ただし、E://1_1_1 に書き込まれたオントロジーに新しい変更がないことを確認できるため、ルールは追加されていません。これを行う方法を教えてください。関連する可能性のある SO に関するその他の質問は26292160、349652です。どちらも私の場合と似ています。
public String ValidateAndConfigureRule(String string) {
try{
GenericRuleReasoner reasoner = new GenericRuleReasoner(Rule.parseRules(string));
Model oModel = m.getOntology();
reasoner.setDerivationLogging(true);
reasoner.setOWLTranslation(true);
reasoner.setTraceOn(true);
reasoner.setTransitiveClosureCaching(true);
InfModel inf = ModelFactory.createInfModel(reasoner, oModel);
inf.write(new FileWriter("E://1_1_1"));
Model baseModel = ModelFactory.createDefaultModel();
baseModel.add(inf);
final OntModel model = ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM_RULE_INF, baseModel);
ValidityReport validity = model.validate();
}
}
ルール自体は、
がオブジェクト プロパティであり、が個体であり、ルール文字列の「:」に必要な接頭辞が付い[ r1: (?x :objProp1 :ind_x) -> (?x :objProp2 :ind_y) ]
た形式です。objProp
ind_x
ind_y