Слияние подиерархии классов с другой онтологией с использованием OWL API - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть две онтологии, называемые онтологией A и онтологией B, в которых нет ни одного человека.Просто мне нужно получить концепт C1 в онтологии A с его подконцепциями (под иерархией понятий) и объединить его с концепцией в онтологии B. Есть ли простой способ достичь этого в OWL API или мне нужно кодироватьэта логика с нуля?

Я рассмотрел некоторые другие связанные вопросы, но они не содержат то, что мне нужно.Protege содержит только опцию слияния двух онтологий, которая не является моей ( Онтология слияния с Protege-OWL API ).Этот вопрос, который я нашел о слиянии онтологий, также касается слияния полных онтологий ( Как правильно объединить 2 онтологии с OWL API 4 или 3.5 ).Я хочу объединить часть одной онтологии с другой.

Очень просто, есть ли в OWL API простой способ объединить часть онтологии (подчиненной иерархии понятий) с другой онтологией?

Заранее спасибо.

1 Ответ

0 голосов
/ 17 декабря 2018

Вопрос обманчиво прост, но есть важные ограничения, которые должны быть явными, прежде чем код может быть написан.

Под иерархия в онтологии, где есть только именованные классы и аксиомы подклассов между именованными классамипросто:

A subclassOf B
C subclassOf B

Субиерархия B полностью описана этими двумя аксиомами, так что вы можете выбрать их и легко скопировать:

OWLOntology source = ...
OWLOntology destination = ...
OWLClass a = ...

source.subClassAxiomsForSuperClass(a).forEach(destination::addAxiom);
// repeat on the subclass in each axiom recursively

Однако, если есть анонимклассы, проблема быстро усложняется:

A subclassOf exist r D
exist r D subclassOf B
C subclassOf B

Выбор набора аксиом для копирования в онтологию назначения становится очень сложным, если необходимо сохранить все выводы, а также утвержденную иерархию (дляНапример, GCI показан в приведенном выше примере. Существует много литературы о модульности и атомном разложении, обе являются областями исследований, которые охватывают тему выбора аксиом, которые допускают все выводы, которые относятся к исходной сигнатуре - в данном случае,ваш стартовый класс.

Вы можете получить набор аксиом, используя SyntacticLocalityModuleExtractor:

destination.addAxioms(new SyntacticLocalityModuleExtractor(
        source.getOWLOntologyManager(), 
        source, 
        ModuleType.STAR));

Однако вы должны прочитать соответствующие статьи в литературе, чтобы понять преимущества и недостатки доступных подходов.Некоторые отправные точки:

http://owl.cs.manchester.ac.uk/research/modularity/

http://www.cs.man.ac.uk/~delvescc/dl-10.pdf

https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3113511/

...