Получить все OWLAnonymousClassExpressions через OWL-API
Использование OWLAPI версии 3.5.0.
Можно ли получить все OWLAnonymousClassExpressions в рамках онтологии? Или даже OWLAnonymousClassExpressions, которые принадлежат одному OWLClass?
1 ответ
Вы можете получить прямые заявленные суперклассы для именованного класса из объекта OWLOntology, вызвав метод getSubClassAxiomsForSubClass.
Это возвратит аксиомы с обоими типами суперкласса - анонимный и западный, я имею в виду названный. Если вы перебираете результат, вы можете выбрать выражения анонимного класса, используя метод isAnonymous. Если вам нужны косвенные суперклассы, вы можете рекурсивно извлечь аксиомы подкласса для любых именованных классов.
В зависимости от ваших требований, вы также можете проверить эквивалентные аксиомы классов, поскольку каждое эквивалентное выражение класса в аксиоме является суперклассом всех остальных. Их можно получить с помощью метода getEquivalentClassesAxioms.
Если вы переходите по родительским ссылкам или расширяете эквивалентности, вам может потребоваться отслеживать именованные классы, которые вы уже обработали в случае циклов.
Если вы хотите включить выводимые суперклассы, а также непосредственно утвержденные, вы можете создать аргумент и использовать его для поиска именованных суперклассов выбранного вами класса. Затем вы можете получить анонимные суперклассы, выбрав аксиомы подкласса, как описано выше.
Дайте мне знать, если это имеет смысл, или если пример кода будет полезен.
Редактировать: OWLClassExpressionCollector
также может быть полезным, так как он собирает все выражения классов из любого OWLObject
: онтология, аксиома или выражение.