2016-09-02 10 views
0

온톨로지 ID가없는 온톨로지가 포함 된 파일이 있습니다 (온톨로지 태그 <Ontology/>는 비어 있음). 사용 된 직렬화 형식은 RDF/XML입니다. 필자의 목표는 파일을 직렬화하고, 온톨로지 ID를 설정하고 OWLAPI를 사용하여 파일을 다시 쓰는 것입니다. 불행히도 나는 이것을 어떻게하는지 모른다. 다음을 시도 :OWL API를 사용하여 익명의 온톨로지의 온톨로지 ID를 설정하는 방법

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입니다. 내가 뭘 잘못하고 있니?

감사합니다.

종류는

답변

0

OWLOntologyManager.setOntologyDocumentIRI() 온톨로지가 아닌 온톨로지 IRI 자체 문서 IRI를 설정하는 것입니다 간주한다. 두 가지의 차이점은 온톨로지 IRI가 온톨로지의 상징적 인 이름 인 반면 문서 IRI는 해석 가능한 URL 또는 파일 경로 (즉 int를 사용하여 온톨로지를 구문 분석 할 수 있음)입니다 (해결할 필요는 없습니다 심지어는 누락 될 수 있습니다. 익명의 온톨로지의 경우입니다. 온톨로지 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); 

는, 평소와 같이 온톨로지를 저장합니다.

+0

고맙습니다. 코드가 정상적으로 작동합니다. 그러나 "생성자 OWLOntologyID (IRI)가 사용되지 않습니다"라는 경고 메시지가 나타납니다. OWLOntologyID를 구축하는 새로운 방법은 무엇입니까? (Javadoc에서 힌트를 찾지 못했습니다) – user3579222

+0

Deprecation 경고를 없애기 위해 Optional 인스턴스를 만들 수 있습니다. – Ignazio