[Resolvido] OWL api

14 respostas
A

Olá, estou com um problema para importar um arquivo .owl
Ja importei as bibliotecas necessarias e retirei o exemplo direto do http://owlapi.sourceforge.net/

Mas aparece esse erro:

Out 29, 2012 3:06:52 PM uk.ac.manchester.cs.owl.owlapi.ParsableOWLOntologyFactory canLoad
INFO: Malformed URL: unknown protocol: f
org.semanticweb.owlapi.model.OWLOntologyFactoryNotFoundException: Could not find an appropriate factory to load ontology from ontology document: <F:/Dropbox/experimento_proposta_dissertacao_denis/Eclipse_Projeto/OWLProj/Ontology/ODomJurBr-RAC.owl>
	at uk.ac.manchester.cs.owl.owlapi.OWLOntologyManagerImpl.loadOntology(OWLOntologyManagerImpl.java:713)
	at uk.ac.manchester.cs.owl.owlapi.OWLOntologyManagerImpl.loadOntologyFromOntologyDocument(OWLOntologyManagerImpl.java:644)
	at BCManager.testOntologyLoading(BCManager.java:136)
	at BCManager.<init>(BCManager.java:119)
	at BCManager.main(BCManager.java:198)

Segue o código abaixo:

import static org.junit.Assert.assertNotNull;
import static org.semanticweb.owlapi.vocab.OWLFacet.*;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import org.coode.owlapi.manchesterowlsyntax.ManchesterOWLSyntaxOntologyFormat;
import org.coode.owlapi.turtle.TurtleOntologyFormat;
import org.junit.Ignore;
import org.junit.Test;
import org.semanticweb.owlapi.apibinding.OWLManager;
import org.semanticweb.owlapi.io.OWLOntologyDocumentTarget;
import org.semanticweb.owlapi.io.OWLXMLOntologyFormat;
import org.semanticweb.owlapi.io.RDFXMLOntologyFormat;
import org.semanticweb.owlapi.io.StreamDocumentTarget;
import org.semanticweb.owlapi.io.StringDocumentTarget;
import org.semanticweb.owlapi.io.SystemOutDocumentTarget;
import org.semanticweb.owlapi.model.AddAxiom;
import org.semanticweb.owlapi.model.AddOntologyAnnotation;
import org.semanticweb.owlapi.model.IRI;
import org.semanticweb.owlapi.model.OWLAnnotation;
import org.semanticweb.owlapi.model.OWLAnnotationProperty;
import org.semanticweb.owlapi.model.OWLAxiom;
import org.semanticweb.owlapi.model.OWLClass;
import org.semanticweb.owlapi.model.OWLClassAssertionAxiom;
import org.semanticweb.owlapi.model.OWLClassExpression;
import org.semanticweb.owlapi.model.OWLDataExactCardinality;
import org.semanticweb.owlapi.model.OWLDataFactory;
import org.semanticweb.owlapi.model.OWLDataProperty;
import org.semanticweb.owlapi.model.OWLDataPropertyAssertionAxiom;
import org.semanticweb.owlapi.model.OWLDataPropertyRangeAxiom;
import org.semanticweb.owlapi.model.OWLDataRange;
import org.semanticweb.owlapi.model.OWLDataSomeValuesFrom;
import org.semanticweb.owlapi.model.OWLDataUnionOf;
import org.semanticweb.owlapi.model.OWLDatatype;
import org.semanticweb.owlapi.model.OWLDatatypeDefinitionAxiom;
import org.semanticweb.owlapi.model.OWLDatatypeRestriction;
import org.semanticweb.owlapi.model.OWLDeclarationAxiom;
import org.semanticweb.owlapi.model.OWLDifferentIndividualsAxiom;
import org.semanticweb.owlapi.model.OWLDisjointClassesAxiom;
import org.semanticweb.owlapi.model.OWLEntity;
import org.semanticweb.owlapi.model.OWLEquivalentClassesAxiom;
import org.semanticweb.owlapi.model.OWLFacetRestriction;
import org.semanticweb.owlapi.model.OWLFunctionalDataPropertyAxiom;
import org.semanticweb.owlapi.model.OWLIndividual;
import org.semanticweb.owlapi.model.OWLLiteral;
import org.semanticweb.owlapi.model.OWLNamedIndividual;
import org.semanticweb.owlapi.model.OWLObjectAllValuesFrom;
import org.semanticweb.owlapi.model.OWLObjectExactCardinality;
import org.semanticweb.owlapi.model.OWLObjectHasValue;
import org.semanticweb.owlapi.model.OWLObjectIntersectionOf;
import org.semanticweb.owlapi.model.OWLObjectOneOf;
import org.semanticweb.owlapi.model.OWLObjectProperty;
import org.semanticweb.owlapi.model.OWLObjectPropertyAssertionAxiom;
import org.semanticweb.owlapi.model.OWLObjectPropertyExpression;
import org.semanticweb.owlapi.model.OWLObjectSomeValuesFrom;
import org.semanticweb.owlapi.model.OWLOntology;
import org.semanticweb.owlapi.model.OWLOntologyCreationException;
import org.semanticweb.owlapi.model.OWLOntologyFormat;
import org.semanticweb.owlapi.model.OWLOntologyID;
import org.semanticweb.owlapi.model.OWLOntologyIRIMapper;
import org.semanticweb.owlapi.model.OWLOntologyManager;
import org.semanticweb.owlapi.model.OWLOntologyStorageException;
import org.semanticweb.owlapi.model.OWLSubClassOfAxiom;
import org.semanticweb.owlapi.model.OWLSubObjectPropertyOfAxiom;
import org.semanticweb.owlapi.model.PrefixManager;
import org.semanticweb.owlapi.model.SWRLAtom;
import org.semanticweb.owlapi.model.SWRLObjectPropertyAtom;
import org.semanticweb.owlapi.model.SWRLRule;
import org.semanticweb.owlapi.model.SWRLVariable;
import org.semanticweb.owlapi.model.SetOntologyID;
import org.semanticweb.owlapi.reasoner.BufferingMode;
import org.semanticweb.owlapi.reasoner.ConsoleProgressMonitor;
import org.semanticweb.owlapi.reasoner.InferenceType;
import org.semanticweb.owlapi.reasoner.Node;
import org.semanticweb.owlapi.reasoner.NodeSet;
import org.semanticweb.owlapi.reasoner.OWLReasoner;
import org.semanticweb.owlapi.reasoner.OWLReasonerConfiguration;
import org.semanticweb.owlapi.reasoner.OWLReasonerFactory;
import org.semanticweb.owlapi.reasoner.SimpleConfiguration;
import org.semanticweb.owlapi.reasoner.structural.StructuralReasoner;
import org.semanticweb.owlapi.reasoner.structural.StructuralReasonerFactory;
import org.semanticweb.owlapi.util.AutoIRIMapper;
import org.semanticweb.owlapi.util.DefaultPrefixManager;
import org.semanticweb.owlapi.util.InferredAxiomGenerator;
import org.semanticweb.owlapi.util.InferredOntologyGenerator;
import org.semanticweb.owlapi.util.InferredSubClassAxiomGenerator;
import org.semanticweb.owlapi.util.OWLClassExpressionVisitorAdapter;
import org.semanticweb.owlapi.util.OWLEntityRemover;
import org.semanticweb.owlapi.util.OWLOntologyMerger;
import org.semanticweb.owlapi.util.OWLOntologyWalker;
import org.semanticweb.owlapi.util.OWLOntologyWalkerVisitor;
import org.semanticweb.owlapi.util.SimpleIRIMapper;
import org.semanticweb.owlapi.vocab.OWL2Datatype;
import org.semanticweb.owlapi.vocab.OWLFacet;
import org.semanticweb.owlapi.vocab.OWLRDFVocabulary;

import uk.ac.manchester.cs.owlapi.modularity.ModuleType;
import uk.ac.manchester.cs.owlapi.modularity.SyntacticLocalityModuleExtractor;


public class BCManager {
	
	private OWLOntology headOWL;
	private OWLOntology secundaryOWL;
	private String secundaryOWLName;
    OWLDataFactory df = OWLManager.getOWLDataFactory();
    OWLReasonerFactory reasonerFactory = new StructuralReasonerFactory();

	public BCManager(String secundaryAccessString){
		try {
			this.testOntologyLoading();
		} catch (Exception e) {
			System.out.println("Erro!");
			e.printStackTrace();
		}
	}
    public OWLOntologyManager create() {
        OWLOntologyManager m = OWLManager.createOWLOntologyManager();
        m.addIRIMapper(new AutoIRIMapper(new File("materializedOntologies"), true));
        return m;
    }
    
    @Test
    public void testOntologyLoading() throws Exception {
        final IRI pizza_iri = IRI
                .create("F:/Dropbox/experimento_proposta_dissertacao_denis/Eclipse_Projeto/OWLProj/Ontology/ODomJurBr-RAC.owl");
        OWLOntologyManager m = create();
        OWLOntology o = m.loadOntologyFromOntologyDocument(pizza_iri);
        assertNotNull(o);
    }
	
	
	public OWLOntology getHeadOWL() {
		return headOWL;
	}

	public void setHeadOWL(OWLOntology headOWL) {
		this.headOWL = headOWL;
	}

	public OWLOntology getSecundaryOWL() {
		return secundaryOWL;
	}

	public void setSecundaryOWL(OWLOntology secundaryOWL) {
		this.secundaryOWL = secundaryOWL;
	}

	public static void main(String[] args){
		
		BCManager bc = new BCManager("C:/Documents and Settings/User/Desktop/OWL e ERR/[telefone removido]-relatorio.owl");
		
	}
	
}

Alguem sabe como posso resolver o problema?

14 Respostas

A

Você já tentou colocar as barras invertidas :

F:\Dropbox\experimento_proposta_dissertacao_denis…

A

Sim, quando coloco as barras invertidas da este erro:

java.lang.IllegalArgumentException: Illegal character in opaque part at index 2: F:\Dropbox\experimento_proposta_dissertacao_denis\Eclipse_Projeto\OWLProj\Ontology\ODomJurBr-RAC.owl
	at java.net.URI.create(Unknown Source)
	at org.semanticweb.owlapi.model.IRI$IRIImpl.toURI(IRI.java:169)
	at uk.ac.manchester.cs.owl.owlapi.ParsableOWLOntologyFactory.canLoad(ParsableOWLOntologyFactory.java:121)
	at uk.ac.manchester.cs.owl.owlapi.OWLOntologyManagerImpl.loadOntology(OWLOntologyManagerImpl.java:683)
	at uk.ac.manchester.cs.owl.owlapi.OWLOntologyManagerImpl.loadOntologyFromOntologyDocument(OWLOntologyManagerImpl.java:644)
	at BCManager.testOntologyLoading(BCManager.java:134)
	at BCManager.<init>(BCManager.java:117)
	at BCManager.main(BCManager.java:157)
Caused by: java.net.URISyntaxException: Illegal character in opaque part at index 2: F:\Dropbox\experimento_proposta_dissertacao_denis\Eclipse_Projeto\OWLProj\Ontology\ODomJurBr-RAC.owl
	at java.net.URI$Parser.fail(Unknown Source)
	at java.net.URI$Parser.checkChars(Unknown Source)
	at java.net.URI$Parser.parse(Unknown Source)
	at java.net.URI.<init>(Unknown Source)
	... 8 more
A

este arquivo ODomJurBr-RAC.owl existe ? na partição do dropbox , certo ?

Qual é o seu SO ? faça um teste colocando 02 barras

F://Dropbox//experimento_proposta_dissertacao_denis//Eclipse_Projeto//OWLProj//Ontology//ODomJurBr-RAC.owl

A

Este arquivo existe em uma pasta do dropbox dentro do computador.
Ja tentei todas as combinações de barra, mas nada resolve
Até fiz debug, e o OWLOntologyFactory estava la, é estranho o stack de erro dizer que não foi encontrado

A

eu me recordo que havia um bug de URI no eclipse , não me recordo qual era a versão …vc esta usando eclipse em que versão ?

A

To usando:

Eclipse Java EE IDE for Web Developers.

Version: Juno Release
Build id: 20120614-1722

É o ultimo lançado eu acho, por que ?

A

Allan Barcelos:
To usando:

Eclipse Java EE IDE for Web Developers.

Version: Juno Release
Build id: 20120614-1722

É o ultimo lançado eu acho, por que ?

Acho que era o helios que tinha um bug deste tipo … cara você já tentou mover este arquivo para raiz por exemplo c:\ e apontar para este caminho, outra coisa …

A

Ja, mas não resolve em nada.

Tentei um monte de coisa, até tentei usar o Jena, mas com ele da MalformedURLException (com o mesmo endereço do projeto com a owl api)

A

Estava dando uma olhada na net …será que esta IRI não aceita apenas http:// … será que localmente não é outra coisa tipo URI …não olhei a documentação …da uma olhada no javadoc e veja senão tem algo que faça acesso local … achei este link aqui …

http://www.people.lu.unisi.ch/fornaran/ontology/OntologyDALT09.java.txt

da olhada …

A

Bah… até tentei, mas o código:

OWLOntology ontology = manager.loadOntologyFromPhysicalURI(URI.create(PHYSICAL_URI));
        System.out.println("Loaded " + ontology.getURI());

Este com erro e pede um cast, mas não resolve o problema

A ideia é legal, ja tentei uma parecida

public void testOntologyLoading() throws Exception {
    	IRI oDomJurBRRAC = IRI.create("ftp://[email removido]//minhaOntologia.owl");
    	OWLOntologyManager m = create();
    	OWLOntology head = m.loadOntologyFromOntologyDocument(oDomJurBRRAC);
    	assertNotNull(head);
    	StringDocumentTarget target = new StringDocumentTarget();
    	m.saveOntology(head, target);
    	m.removeOntology(head);
    	OWLOntology o2 = m.loadOntologyFromOntologyDocument(new StringDocumentSource(target.toString()));
    	assertNotNull(o2);
    }

Esta da erro de URL mal formada

E esta tambem:

public void shouldLoad() throws OWLOntologyCreationException {
    	// Get hold of an ontology manager
    	OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
    	// Let's load an ontology from the web
    	URL url = null;
    	URLConnection conn = null;
    	IRI iri = null;
    	try {
    		url = new URL("ftp://[email removido]//minhaOntologia.owl");
    		conn = url.openConnection();
    		conn.connect();
    		iri = IRI.create(conn.getURL());
    	} catch (MalformedURLException e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	} catch (IOException e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	} catch (URISyntaxException e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	}
    	OWLOntology pizzaOntology = manager.loadOntology(iri);
    	System.out.println("Loaded ontology: " + pizzaOntology);
    }

Esta da erro ao achar o arquivo, não conecta ao FTP
Tentei com o Jena tambem, mas ele tambem não conecta no FTP, mesmo criando uma conexão remota

Não faço a minima ideia de como vou resolver isso

A
OWLOntology ontology = manager.loadOntologyFromPhysicalURI(URI.create(PHYSICAL_URI));
        System.out.println("Loaded " + ontology.getURI());

Aqui qdo pediu o cast você diz que não resolve o problema , não entendi , envia o log quando você tentou desta maneira , pelo que percebi a URI você cria ela em algum local e depois recupera … envia o log de erro para dar uma olhada …

A

Tem erro de cast

OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
        OWLOntology ontology = manager.loadOntologyFromPhysicalURI(URI.create("ftp://[email removido]//minhaOntologia.owl"));  // Pede o cast para manager
        System.out.println("Loaded " + ontology.getURI()); // Pede cast para ontology

Ele pede o cast na linha infinitamente

OWLOntology ontology = ((Object) manager).loadOntologyFromPhysicalURI(URI.create("ftp://[email removido]//minhaOntologia.owl"));

E na outra linha

System.out.println("Loaded " + ontology.getURI());

Pede um cast que não é aceito

Eu consegui fazer carregar de um arquivo local, mas não consigo do FTP, fica aparecendo o erro abaixo:

Exception in thread "main" java.lang.NullPointerException
	at sun.net.www.protocol.ftp.FtpURLConnection.connect(Unknown Source)
	at sun.net.www.protocol.ftp.FtpURLConnection.getInputStream(Unknown Source)
	at org.semanticweb.owlapi.io.AbstractOWLParser.getInputStreamFromContentEncoding(AbstractOWLParser.java:109)
	at org.semanticweb.owlapi.io.AbstractOWLParser.getInputStream(AbstractOWLParser.java:89)
	at org.semanticweb.owlapi.io.AbstractOWLParser.getInputSource(AbstractOWLParser.java:148)
	at org.coode.owlapi.rdfxml.parser.RDFXMLParser.parse(RDFXMLParser.java:80)
	at uk.ac.manchester.cs.owl.owlapi.ParsableOWLOntologyFactory.loadOWLOntology(ParsableOWLOntologyFactory.java:165)
	at uk.ac.manchester.cs.owl.owlapi.OWLOntologyManagerImpl.loadOntology(OWLOntologyManagerImpl.java:687)
	at uk.ac.manchester.cs.owl.owlapi.OWLOntologyManagerImpl.loadOntologyFromOntologyDocument(OWLOntologyManagerImpl.java:644)
	at BCManager.getOwlFromFtp(BCManager.java:184)
	at BCManager.<init>(BCManager.java:129)
	at BCManager.main(BCManager.java:231)
A

Consegui com uma coisa absurdamente facil.

o problema da conexão com o ftp era a senha que faltava no caminho.

ftp://ontologias:[email removido]/minha.owl

E consegui tambem para carregar arquivo do computador

Valeu ae

A

Opa maravilha …abs

Criado 29 de outubro de 2012
Ultima resposta 30 de out. de 2012
Respostas 14
Participantes 2