Хотя я не использовал широко функциональные возможности owlready2, я считаю, что это то же самое, что и для любого обновления онтологии, использующего owlready2.
В основном в owlready2, чтобы разделить разные онтологии или разные версии одной и той же онтологии (потенциально использующие разные пространства имен), вам нужно поместить их в разные «миры».Синтаксис описан здесь .
Вот некоторый код, основанный на примерах документации, чтобы дать вам представление о синтаксисе
from owlready2 import *
world = World()
onto = world.get_ontology("http://test.org/onto.owl")
with onto:
class Drug(Thing):
pass
class ActivePrinciple(Thing):
pass
class has_for_active_principle(Drug >> ActivePrinciple):
pass
class someActivePrinciple(ActivePrinciple):
pass
class MyDrug(Drug):
has_for_active_principle = [someActivePrinciple] #this one has some property restriction
# let's separate the worlds
world2 = World()
onto2 = world2.get_ontology("http://test.org/onto.owl")
with onto2:
class Drug(Thing):
pass
class ActivePrinciple(Thing):
pass
class has_for_active_principle(Drug >> ActivePrinciple):
pass
class someActivePrinciple(ActivePrinciple):
pass
class MyDrug(Thing): # not a subClass of Drug
pass # missing the has_for_active_principle restriction
# now we can save without mixing the ontologies
onto.save(file=r"c:\temp\owlready.rdf", format="rdfxml")
onto2.save(file=r"c:\temp\owlready2.rdf", format="rdfxml")
Обратите внимание, что в настоящее время существует ошибка, которая не позволяет напрямую сохранять «миры», толькоонтология может быть сохранена, но ошибка уже была исправлена в версии для разработчиков.Смотрите на форуме owlready актуальное обсуждение