es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Java8: No se puede obtener el valor de un tipo de retorno Optional.of (String).

En el contexto de usar la API OWLAPI 4.0, esta línea de código:

ontologyIRI = IRI.create(o.getOntologyID().getOntologyIRI().toString());

devuelve la siguiente cadena:

"Optional.of(http://www.indytion.com/music/composition)".

Lo que necesito es la sola cadena “http://www.indytion.com/music/composition”.

He intentado declarar ontologyIRI como Optional<iri> y usar los métodos .get(), .orElse(), etc., pero sin éxito. Aún obtengo la cadena devuelta que incluye la parte ‘optional.of()’.

Mi pregunta es: ¿Cómo puedo obtener la cadena interna?

Muchas gracias por tu ayuda.

Editar: El código completo del método es:

private void LoadOntology(String ontologyPath) {
    OWLOntologyManager man = OWLManager.createOWLOntologyManager();
    OWLOntology o;

    File ontologyFile = new File(ontologyPath);
    Optional<iri> ontologyIRI;
    try {
        o = man.loadOntologyFromOntologyDocument(ontologyFile);
        ontologyIRI = Optional.of(IRI.create(String.valueOf(o.getOntologyID().getOntologyIRI()).toString()));
        System.out.println("La IRI de la ontología es: " + ontologyIRI.get());
    } catch (OWLOntologyCreationException e) {
        e.printStackTrace();
    }
}

System.out.println() devuelve exactamente esta cadena:
"La IRI de la ontología es: Optional.of(http://www.indytion.com/music/composition)"

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para obtener la cadena interna, necesitas llamar al método .orElse() para obtener el valor del opcional, que será el objeto IRI. Luego, puedes llamar a .toString() en el objeto IRI para obtener la representación de cadena de la IRI.

    Aquí está el código actualizado:

    private void LoadOntology(String ontologyPath)
    {
        OWLOntologyManager man = OWLManager.createOWLOntologyManager();
        OWLOntology o;
    
        File ontologyFile = new File(ontologyPath);
        Optional<iri> ontologyIRI;
        try {
    
            o = man.loadOntologyFromOntologyDocument(ontologyFile);
            ontologyIRI = Optional.of(IRI.create(String.valueOf(o.getOntologyID().getOntologyIRI()).toString()));
            System.out.println("La IRI de la ontología es: " + ontologyIRI.orElse(IRI.create("")).toString());
        } catch (OWLOntologyCreationException e) {
            e.printStackTrace();
        }
    }
    

    En este código actualizado, estamos llamando a .orElse(IRI.create("")) en el opcional, lo que significa que si el opcional está vacío, devolverá un objeto de IRI vacío. Luego llamamos a .toString() en el objeto IRI para obtener la representación de cadena de la IRI, que debería ser la única cadena “http://www.indytion.com/music/composition”.

Comments are closed.