Повторное использование выведенных операторов в InfModel для существующей модели в Йене

У меня есть модель Jena, заполненная операторами, и я использую GenericRuleReasoner с настраиваемыми строками правил, как показано ниже (пример непосредственно взят из учебная страница Йены)

String rules = "[rule1: (?a eg:p ?b) (?b eg:p ?c) -> (?a eg:p ?c)]";
Reasoner reasoner = new GenericRuleReasoner(Rule.parseRules(rules));
reasoner.setDerivationLogging(true);
InfModel inf = ModelFactory.createInfModel(reasoner, model);

Насколько я понимаю рассуждение Йены, новая модель вывода inf будет содержать утверждения из model, а также новые выведенные утверждения, сгенерированные правилами. Являются ли экземпляры операторов в inf и model общими или разными? Если по-другому, не будет ли это тратить слишком много памяти?

Проблема, с которой я сталкиваюсь, заключается в повторном использовании выведенных операторов в model. Перебор модели inf для поиска новых выведенных утверждений и добавления их к model кажется наивным подходом. Есть ли другой более разумный метод?

Наконец, мне интересно, как лучше всего удалить устаревшее утверждение из model. То, что я имею в виду под устаревшим утверждением, вероятно, лучше всего объяснить на примере. Скажем, есть утверждение (Speaker hasSoundLevel 50) в файле model. Позже, когда будет вставлено новое утверждение, такое как (Speaker hasSoundLevel 80), оно должно аннулировать (т. е. удалить) (Speaker hasSoundLevel 50) из файла model. Можно ли этого добиться с помощью правила? Что делать, если оператор должен быть устаревшим через определенное время после его вставки? Любые предложения о том, как этого добиться, будут оценены.

Спасибо,


person wns349    schedule 14.09.2015    source источник


Ответы (1)


Являются ли экземпляры операторов в inf и model общими или разными?

Кажется, они общие. Например, после того, как вы создали InfModel, вы можете добавить новую тройку напрямую, используя InfModel.add(s,p,o). Затем вы обнаружите, что тройка также была добавлена ​​к исходному model. Что касается выводных утверждений, они, по-видимому, остаются разными, то есть не будут отображаться в model.

person fprac    schedule 15.02.2018