我有一个包含本体的文件,没有本体id (本体标记<Ontology/>是空的)。使用的序列化格式是RDF/XML。我的目标是序列化文件,设置本体id,并使用OWLAPI将文件写回。不幸的是我不知道该怎么做。我尝试了以下几点:
ontology = ontologyManager.loadOntologyFromOntologyDocument(new File("filename"));
ontologyManager.setOntologyDocumentIRI(ontology, IRI.create("http://www.mydesiredIri.com/abc"));
ontologyManager.saveOntology(ontology,new FileOutputStream(new File("outputfile")));通过运行代码,本体-ID不会添加到本体中。与<Ontology rdf:about="http://www.mydesiredIri.com/abc"/>不同,标记仍然是emtpy的。我做错什么了?
谢谢!
亲切的问候
发布于 2016-09-02 08:24:57
OWLOntologyManager.setOntologyDocumentIRI()用于设置本体的文档IRI,而不是本体IRI本身。两者的区别在于,文档IRI是一个可解析的URL或文件路径(例如,int可以用于解析本体),而本体IRI是本体的符号名(它不需要可解析,甚至可以丢失--这是匿名本体的情况)。
若要设置本体IRI,请使用:
//versionIRI can be null
OWLOntologyID newOntologyID = new OWLOntologyID(ontologyIRI, versionIRI);
// Create the change that will set our version IRI
SetOntologyID setOntologyID = new SetOntologyID(ontology, newOntologyID);
// Apply the change
manager.applyChange(setOntologyID);在此之后,像往常一样保存本体。
https://stackoverflow.com/questions/39284768
复制相似问题