¿Cómo leo los archivos .owl
en Java y visualizo su contenido?¿Cómo leo archivos .owl en Java y visualizo su contenido?
Respuesta
¿Cuál es el contexto? OWL es un formato de ontología leído por http://protege.stanford.edu/.
Utilice The OWL API.
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.
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.
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();
}
}
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
- 1. ¿Cómo leo contenido de ARCHIVO en QML?
- 2. ¿Cómo leo/escribo archivos descomprimidos?
- 3. ¿Cómo leo la entrada formateada en Java?
- 4. archivos concatenar sin copiar su contenido
- 5. ¿Cómo visualizo contenido de oficina y/o PDF en un formulario de Windows?
- 6. ¿Cómo visualizo un contenido de página de WordPress?
- 7. ¿Cómo leo la documentación de Java?
- 8. Crear directorio. Si existe, elimine el directorio y su contenido y cree uno nuevo en Java
- 9. Cómo tomo un ByteArrayInputStream y guardo su contenido como un archivo en el sistema de archivos
- 10. cómo representar árboles y su contenido en MySQL?
- 11. Cómo eliminar un directorio y su contenido usando NSFileManager
- 12. Descargar la página html y su contenido
- 13. ¿Cómo leo la entrada carácter por carácter en Java?
- 14. ¿Cómo visualizo un conjunto de resultados Java visualmente?
- 15. Cómo evitar que un div y su contenido se impriman
- 16. ¿Cómo visualizo un gráfico complejo en .Net?
- 17. Cómo consultar personas en DL Manchester OWL Sintaxis?
- 18. Encriptar contenido con php y java
- 19. predicado RDF ponderado (owl: ObjectProperty)
- 20. ¿Cómo visualizo HTML local en QWebview?
- 21. Uso de la ontología Protege owl en Android
- 22. obtener restricciones OWL en clases usando Jena
- 23. ¿Cómo visualizo un PDF en Adobe Flex?
- 24. ¿Cómo creo, escribo y leo datos de sesión en CakePHP?
- 25. ¿Cómo visualizo el contenido completo de la columna LOB en Oracle SQL * Plus?
- 26. Obtener contenido de archivos en el script java
- 27. ¿Cómo visualizo un PDF en ROR (Ruby)?
- 28. ¿Cómo visualizo el código PHP en HTML?
- 29. Cómo configurar iOs UITextViews y UILabels para que su altura esté determinada por su contenido
- 30. gitignore y cómo ignorar un nombre de directorio común y su contenido
quiero leer el archivo .owl en java y mostrar sus conceptos y subconceptos – nagender