2010-07-29 15 views

Respuesta

1

¿Cuál es el contexto? OWL es un formato de ontología leído por http://protege.stanford.edu/.

+0

quiero leer el archivo .owl en java y mostrar sus conceptos y subconceptos – nagender

0

Tiene varias opciones.

.owl archivos son archivos de texto, y puede mostrarlos de esa manera.

.owl usa XML, por lo que puede tratarlo como un documento XML. Consulte http://www.w3.org/TR/owl-xmlsyntax/ y http://www.w3.org/TR/owl2-overview/ para obtener una lista de etiquetas y lo que representan.

O puede usar la API OWL. Se puede descargar en: http://owlapi.sourceforge.net/index.html, y hay varios ejemplos en http://owlapi.sourceforge.net/documentation.html

Viendo y la ontología OWL es un poco difícil porque la información que desea mostrar puede ser altamente ligada, por lo que su estructura es la de un gráfico en lugar de secuencial o tabular. Es posible que las clases sean subclases de muchas otras subclases, y la clasificación cíclica es posible. Es decir, A puede ser una subclase de B, que puede ser una subclase de C que puede ser una subclase de A.

5

La API OWL en source forge (http://owlapi.sourceforge.net/) tiene todas las funciones básicas, aunque la documentación es apenas suficiente. Puede terminar perdiendo el tiempo averiguando cómo funcionan las funciones complejas que no se muestran en los ejemplos.

Recomendaría ir a Protege API para archivos OWL. (http://protegewiki.stanford.edu/wiki/ProtegeOWL_API_Programmers_Guide /). Esta API tiene buena documentación y la wiki es fácil de navegar. Los archivos OWL no son fáciles de solucionar debido a su naturaleza semántica y la creación de su propia API puede no ser fácil. Protege también tiene API SWRL si desea procesar axiomas y reglas.

0

Aquí está un ejemplo para analizar una ontología OWL con la biblioteca API de OWL:

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

hay una manera más usando API Jena en JAVA, pero hay que crear archivos SDB o TDB para el archivo OWL dada . Luego puede consultar usando SPARQL. JENA API

Cuestiones relacionadas