2016-03-29 2 views
0

Я работаю со стеклом OWL API 3/Pellet/SPARQL-DL и хочу прочитать утвержденные аксиомы TBox определенного класса из онтологии.Получить Аксиомы TBox с API OWL

Я могу легко получить доступ к аксиомам с помощью OWL API. Однако OWLClassAxiom просто предоставляет функцию доступа к сигнатуре без соединений. То есть Я хочу знать, к какому классу назначен ObjectProperty. Все, что я могу получить, это набор всех элементов в сигнатуре без их соединения.

Похоже, что OWL API не поддерживает работу с заданными аксиомами на уровне классов (чтение, а не добавление). Или я что-то упускаю? Любые другие идеи, как это достичь? (С любыми инструментами.)

Бетон Пример: Пицца hasBase немного PizzaTopping. Я хочу получить значение «PizzaTopping», указав Pizza и hasBase.

ответ

4

Если Пицца класс, то

                Pizza hasBase некоторые PizzaTopping

не является юридическим аксиома. То, что вы, вероятно, на самом деле есть,

                Пицца subClassof hasBase некоторые PizzaTopping

Это означает, что каждый экземпляр пиццы связано с некоторым например из PizzaTopping свойством hasBase. Аксиома является аксиомой подкласса, поэтому вы хотите получить экземпляр OWLSubClassOfAxiom (который является подклассом OWLClassAxiom).

В этом случае, если у вас есть ссылка на OWLClass для Pizza, вы можете использовать OWLClass#getSuperclasses(), чтобы получить список выражений суперкласса. Одним из них будет выражение OWLObjectSomeValuesFrom для (hasBase some PizzaTopping). Вам нужно будет искать те из этого типа, а затем изучить свойство, на которое это ограничение.

Тем не менее, ваша заявленная цель

, чтобы знать, какой класс, состоящее ObjectProperty присваивается

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

+2

Правильно, единственное, что вы можете сделать легко, это получить все интересующие вас аксиомы в свойствах в сигнатуре, но в зависимости от типа аксиомы это может быть не то, что вы хотите. «OWLAxiomVisitor» может быть способом ... – AKSW

+0

Спасибо, что указал на недостатки в моей логике, отличный ответ. Я заработал. Однако мне все еще не нравится доступ к аксиомам. Все, что есть, есть «getXInSignature», который просто возвращает набор. Это бесполезно, если у вас есть композиция (например, пересечение двух некоторых значений) - мне нужно вручную пройти через субаксиомы. Возможно, мой вариант использования очень специфичен, или я все еще не получил его полностью. Но так или иначе, это работает сейчас[email protected] можно ли использовать посетителя только для аксиом определенного класса или пройти через всю онтологию? – nick

+1

@nick Есть 'getProperty()' в объекте OWL Некоторые значения из Axiom. Вам не нужно использовать методы getXInSignature. Тем не менее, предложение AKSW изучить посетителей аксиомы, вероятно, поможет многим. –

Смежные вопросы