У меня есть модель онтологии Jena ( OntModel ), которую я изменяю программно. Эта модель была изначально создана с использованием метода ModelFactory по умолчанию для создания модели онтологии (без параметров) . Проблема заключалась в том, что, поскольку программа работала и модель изменялась, по умолчанию запускалась Jena Reasoner (и запускалась, и запускалась, и запускалась). Процесс был слишком медленным для того, что мне нужно, и на больших наборах данных не хватало бы памяти.
Я изменил программу, чтобы использовать другой метод фабрики моделей онтологий , чтобы создать модель без аргумента. Это работало очень быстро и не показывало никаких проблем с памятью, которые я видел ранее (даже для очень больших наборов данных). Проблема этого подхода заключается в том, что я могу получить доступ к данным только напрямую, используя прямой тип класса (я не могу получить доступ к объектам, используя его родительский класс).
Например, представьте, что у меня есть два класса ресурсов: "цветок" и "семя". Они наследуются от общего родителя, «растительного материала». Моя программа берет все «семена», запускает метод «расти», который превращает объект «семена» в объект «цветок». Метод grow работает слишком медленно и не хватает памяти при использовании Reasoner (даже микро Reasoner). Если я отключу Reasoner, то не смогу получить доступ ко всем "цветам" и "семенам", используя класс "растительный материал".
Есть ли предпочтительный способ (удачный способ) сделать это ... позволяющий получать доступ к объектам, используя их суперкласс, при этом будучи быстрым и не занимая память?
Я искал способ "отключить рассуждение", пока я запускаю свой метод "grow", а затем снова включаю его один раз после завершения метода. Возможно ли это как-то?