Я использую GenericRuleReasoner для вывода виртуальных фактов в своей онтологии. GenericRuleReasoner принимает правила вывода как правило журнала данных во входных данных, как объясняется в поддержке вывода jena. вот пример DatalogRule, прикрепленного к универсальному рассуждению:
String rules = "[r1: (?e1 st:runningTask st:gic_eth0) -> (?e1 rdf:type st:dataFromEthernet2IP)]";
Reasoner reasoner = new GenericRuleReasoner(Rule.parseRules(rules));
reasoner.setDerivationLogging(true);
InfModel inf = ModelFactory.createInfModel(reasoner, rawData);
Когда я протестировал этот код на своих данных, он работал нормально и предоставил 2000 виртуальных фактов. Однако, когда я изменил правило журнала данных, чтобы создать такие пустые узлы,
String rules = "[r1: (?e1 st:runningTask st:gic_eth0) -> (_:p rdf:type st:dataFromEthernet2IP)]";
Я получаю только на основании виртуальных выводов.
Есть ли проблема с моим пустым представлением узла в правиле журнала данных для GenericRuleReasoner?