Возьмите имя и посчитайте количество родственных классов в сгенерированной онтологии, используя Java

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

    Main super class- A
    Two sub classes of A - B , C
    Three sub classes of B- D, E 

Я пытался использовать следующий код. Я использовал getSuperClass для получения суперкласса, а затем getSubClass для получения его подклассов. Я использовал arraylist для первого имени каждого класса братьев и сестер. Итак, в вышеприведенном примере вывод должен выглядеть так:

 [C] [B] [E] [D]

В приведенном выше выводе, 1-й для родного брата B, 2-й для родного брата C... Я использовал Jena для генерации онтологии. (Я слышал о запросе SPARQL, но я новичок в этом.)

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

public ArrayList<String> countSiblingClasses(String ontoClass) {

    ontologyCreation();
    this. m.read("http://localhost/new/onto1.owl");
     ExtendedIterator<OntClass> classes = ((OntModel) m).listClasses(); 

     ArrayList<String> siblingsName = new ArrayList<String>();
     while (classes.hasNext()) {

    OntClass all= (OntClass) classes.next();
    String cls = all.getSuperClass().listSubClasses().toSet().toString();
    System.out.println("class names="+cls);

    siblingsName.add(cls);
   }
    return siblingsName; 
}

Выдали пут,

Exception in thread "main"  class names=[http://localhost/new/E, http://localhost/new/D]
 class names=[http://localhost/new/E, http://localhost/new/D]
 class names=[http://localhost/new/C, http://localhost/new/B]
 class names=[http://localhost/new/C, http://localhost/new/B]
java.lang.NullPointerException
    at Final_Cal.OntologyCreation2.countSiblingClasses(OntologyCreation2.java:235)
    at Final_Cal.OntologyCreation2.main(OntologyCreation2.java:34)

1 ответ

Решение

Javadoc для OntClass.getSuperClass() говорит:

Суперкласс этого класса или нуль

A не будет суперкласса.

Другие вопросы по тегам