2015-03-10 2 views
0

В OWL API я не могу найти способ получить эквивалентный класс для типа данных, который определяет перечисление допустимых значений. Когда у меня есть OWLDatatype в руке, как мне получить набор допустимых значений?Как получить эквивалентный класс Dataype в OWL API?

[Я пробовал использовать RDF/XML в качестве кодового блока здесь, но он не работает. Я даже посмотрел на помощь по уценке. Скажите, пожалуйста, как это сделать]

Онтология использует следующую конструкцию:.

  • ИСС: Тип данных
    • сова: equivalentClass
      • ИСС: Тип данных
        • сова: oneOf
          • rdf: Описание
            • РДФ: Тип РДФ: ресурс = "http://www.w3.org/1999/02/22-rdf-syntax-ns#List"
+0

Вы имеете в виду, что для каждого DataProperty можно найти DataType? Поскольку набор допустимых значений определен в области и диапазонах свойств данных. – Artemis

+0

Я хочу знать, является ли OWLDatatype перечислением значений, и если это так, я хочу что-то сделать с этими значениями. –

+0

Могу ли я иметь свою онтологию? – Artemis

ответ

0

Вот что я придумал:

for (OWLDatatype dt : o.getDatatypesInSignature(Imports.INCLUDED)) { 
     logger.info("found datatype {} labeled '{}'", dt, getOWLEntityLabel(dt)); 
     Set<OWLDatatypeDefinitionAxiom> datatypeDefinitions = o.getDatatypeDefinitions(dt); 
     for (OWLDatatypeDefinitionAxiom definitionAxiom : datatypeDefinitions) { 
      logger.info("found datatype definition '{}'", definitionAxiom); 
      OWLDataRange dataRange = definitionAxiom.getDataRange(); 
      if (! dataRange.isDatatype()) { 
       logger.info("looks like an enumeration"); 
       OWLDataOneOf owlDataOneOf = (OWLDataOneOf) dataRange; 
       Set<OWLLiteral> values = owlDataOneOf.getValues(); 
       for (OWLLiteral value : values) { 
        logger.info("Found literal value '{}'", value.getLiteral()); 
       } 
      } 
     } 
    } 

Я действительно не люблю актеров на OWLDataOneOf. Должен быть лучший способ.

1

Если правильно понимаю, у вас есть определенный класс «с», который был определен как эквивалент oneOf многих людей, то я думаю, что это один из способов, чтобы получить эти «допустимые значения»:

Set<OWLClassAxiom> allAx=localOntology.getAxioms(c); 
    for(OWLClassAxiom ax: allAx){ 
     if(ax.getAxiomType()==AxiomType.EQUIVALENT_CLASSES) 
      for(OWLClassExpression nce :ax.getNestedClassExpressions()) 
       if(nce.getClassExpressionType()==ClassExpressionType.OBJECT_ONE_OF) 
        for(OWLNamedIndividual temp: nce.getIndividualsInSignature()) 
         System.out.println(temp); 
    } 
+0

На самом деле это не решает проблему. Чтобы ознакомиться с конструкциями API OWL, я создал перечисление 'OWLDatatype'. Это включало использование 'OWLDataOneOf',' OWLDatatype' и 'OWLDatatypeDefinitionAxiom'. –

+1

Вы должны отправить свое решение. Это может быть полезно для других, и я тоже не против видеть его! – Artemis

+0

Хорошо, мне пришлось немного поиграть в отладчике, но я думаю, что понял это. Я отправил свое решение. –

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