如何使用OWL API设置匿名本体的本体ID

时间:2016-09-02 05:19:08

标签: owl protege owl-api

我有一个包含没有本体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")));

通过运行代码,Ontology-ID不会添加到本体。标签仍然是<Ontology rdf:about="http://www.mydesiredIri.com/abc"/>,而不是public static async void CopyTheFile(StorageFolder Subfdl, string strfilenm) { string strPath = "C:\\Users\\XYZUser\\Documents\\MyStuffBU"; StorageFolder folder = await StorageFolder.GetFolderFromPathAsync(strPath); var targetFile = await Subfdl.GetFileAsync(strfilenm); await targetFile.CopyAndReplaceAsync(targetFile); await targetFile.DeleteAsync(); } 。我做错了什么?

谢谢!

亲切的问候

1 个答案:

答案 0 :(得分:0)

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);

在此之后,像往常一样保存本体。