【发布时间】:2022-01-19 20:01:11
【问题描述】:
在使用 OWLAPI 4.0 API 的上下文中,以下代码行:
ontologyIRI = IRI.create(o.getOntologyID().getOntologyIRI().toString());
返回以下字符串:
"Optional.of(http://www.indytion.com/music/composition)".
我需要的是唯一的字符串“http://www.indytion.com/music/composition”。
我尝试将 ontologyIRI 声明为 Optional 并使用 .get() 方法、.orElse() 等无济于事。我仍然有包含 'optional.of()' 部分的返回字符串。
我的问题是:如何获取内部字符串?
非常感谢您的帮助。
编辑:方法的完整代码
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("Ontology IRI is: " + ontologyIRI.get());
} catch (OWLOntologyCreationException e) {
e.printStackTrace();
}
}
The System.out.println() returns exactly this string:
"Ontology IRI = Optional.of(http://www.indytion.com/music/composition)"
【问题讨论】:
-
请更明确地说“无济于事”:显示您的代码是什么样的,它做了什么或为什么不能运行它。
.get()和.orElse()都应该可以工作。 -
o.getOntologyID().getOntologyIRI()是否返回Optional? -
@JoachimSauer 我相信 OP 从响应中得到
Optional.of(http://www.indytion.com/music/composition)逐字作为字符串。 -
这是一种猜测,但由于
IRI.create被记录为返回IRI,因此如果它返回该文字字符串,那么就出现了问题。这就是为什么 OP 应该真正向我们展示一些代码,而不仅仅是描述代码。 -
很难说 OP 到底在用什么,但如果是 this
getOntologyIRI()那么整个IRI.create(o.getOntologyID().getOntologyIRI().toString())就完全没有意义了,因为o.getOntologyID().getOntologyIRI().get()就足够了