2010-07-29 3 views

ответ

1

В чем заключен контекст? OWL - это формат онтологии, который читает http://protege.stanford.edu/.

+0

Я хочу прочитать файл .owl в java и отобразить его концепции и под-концепции – nagender

0

У вас есть несколько вариантов.

.owl-файлы - это текстовые файлы, и вы можете отображать их таким образом.

.owl использует XML, поэтому вы можете рассматривать его как документ XML. Обратитесь к http://www.w3.org/TR/owl-xmlsyntax/ и http://www.w3.org/TR/owl2-overview/ за список тегов и их количество.

Или вы можете использовать API OWL. Вы можете скачать его по адресу: http://owlapi.sourceforge.net/index.html, и есть несколько примеров на http://owlapi.sourceforge.net/documentation.html

Отображение и онтология OWL несколько сложна, потому что информация, которую вы хотите отобразить, может быть сильно связана, поэтому ее структура представляет собой структуру графика, а не последовательную или табличный. Классы могут быть подклассами многих других подклассов, и циклическая классификация возможна. То есть A может быть подклассом B, который может быть подклассом C, который может быть подклассом A.

5

OWL API в исходной кузнице (http://owlapi.sourceforge.net/) имеет все основные функции, хотя документация едва достаточно. Вы можете в конечном итоге потратить время на выяснение того, как сложные функции не показаны в примерах.

Я бы порекомендовал для API Protege для файлов OWL. (http://protegewiki.stanford.edu/wiki/ProtegeOWL_API_Programmers_Guide /). Этот API имеет хорошую документацию, а вики легко ориентироваться. OWL-файлы нелегко работать из-за своей семантической природы, и создание собственного API может быть непростым. Protege также имеет SWRL API, если вы хотите обрабатывать аксиомы и правила.

0

Вот пример для разбора OWL онтологии с библиотекой OWL API:

import static org.semanticweb.owlapi.search.Searcher.annotations; 
import static org.semanticweb.owlapi.vocab.OWLRDFVocabulary.RDFS_LABEL; 

import java.util.ArrayList; 
import java.util.List; 

import org.semanticweb.owlapi.apibinding.OWLManager; 
import org.semanticweb.owlapi.model.IRI; 
import org.semanticweb.owlapi.model.OWLAnnotation; 
import org.semanticweb.owlapi.model.OWLAnnotationProperty; 
import org.semanticweb.owlapi.model.OWLClass; 
import org.semanticweb.owlapi.model.OWLDataFactory; 
import org.semanticweb.owlapi.model.OWLException; 
import org.semanticweb.owlapi.model.OWLLiteral; 
import org.semanticweb.owlapi.model.OWLOntology; 
import org.semanticweb.owlapi.model.OWLOntologyCreationException; 
import org.semanticweb.owlapi.model.OWLOntologyManager; 

public class OwlParser { 

    private final OWLOntology ontology; 
    private OWLDataFactory df; 

    public OwlParser(OWLOntology ontology, OWLDataFactory df) { 
     this.ontology = ontology; 
     this.df = df; 
    } 

    public void parseOntology() 
      throws OWLOntologyCreationException { 

     for (OWLClass cls : ontology.getClassesInSignature()) { 
      String id = cls.getIRI().toString(); 
      String label = get(cls, RDFS_LABEL.toString()).get(0); 
      System.out.println(label + " [" + id + "]"); 
     } 
    } 

    private List<String> get(OWLClass clazz, String property) { 
     List<String> ret = new ArrayList<>(); 

     final OWLAnnotationProperty owlProperty = df 
       .getOWLAnnotationProperty(IRI.create(property)); 
     for (OWLOntology o : ontology.getImportsClosure()) { 
      for (OWLAnnotation annotation : annotations(
        o.getAnnotationAssertionAxioms(clazz.getIRI()), owlProperty)) { 
       if (annotation.getValue() instanceof OWLLiteral) { 
        OWLLiteral val = (OWLLiteral) annotation.getValue(); 
        ret.add(val.getLiteral()); 
       } 
      } 
     } 
     return ret; 
    } 

    public static void main(String[] args) throws OWLException, 
      InstantiationException, IllegalAccessException, 
      ClassNotFoundException { 

     String x = "http://ontology.neuinfo.org/NIF/Dysfunction/NIF-Dysfunction.owl"; 

     IRI documentIRI = IRI.create(x); 
     OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); 
     OWLOntology ontology = manager 
       .loadOntologyFromOntologyDocument(documentIRI); 
     OwlParser parser = new OwlParser(ontology, manager.getOWLDataFactory()); 
     parser.parseOntology(); 
    } 
} 
0

Существует еще один способ использования Jena API в JAVA, но вы должны создать SDB или БРТ файлы для данного файла OWL , Затем вы можете запросить использование SPARQL. JENA API