2012-09-12 3 views
1

새로운 온톨로지를 생성하려고 시도 중입니다. 일부 작업 후에 저장합니다. 그것은 잘 만들어졌고 수업이나 다른 것들을 다루는데 아무런 문제가 없지만, 그것을 로컬 파일에 저장하려고하면 에러가납니다!jena로 온톨로지를 저장하는 중 오류가 발생했습니다.

//create a new ontology 
SOURCE = "http://www.w3.org/2002/07/owl#"; 
NS = SOURCE + "#"; 
ontology = ModelFactory.createOntologyModel(); 
ontology.read(SOURCE, "RDF/XML"); 
///////some actions 
//save the ontology 
try { 
     File file= new File("Log.owl"); 
     ontology.write(new FileOutputStream(file)); 

    } 
    catch (IOException e) { 
     e.printStackTrace(); 
    } 

그리고 오류는 다음과 같습니다 : 내 코드는

Exception in thread "main" com.hp.hpl.jena.shared.BadURIException: Only well-formed absolute URIrefs can be included in RDF/XML output: <d> Code: 57/REQUIRED_COMPONENT_MISSING in SCHEME: A component that is required by the scheme is missing. 
at com.hp.hpl.jena.xmloutput.impl.BaseXMLWriter.checkURI(BaseXMLWriter.java:829) 
at com.hp.hpl.jena.xmloutput.impl.BaseXMLWriter.xmlnsDecl(BaseXMLWriter.java:348) 
at com.hp.hpl.jena.xmloutput.impl.Basic.writeRDFHeader(Basic.java:56) 
at com.hp.hpl.jena.xmloutput.impl.Basic.writeBody(Basic.java:39) 
at com.hp.hpl.jena.xmloutput.impl.BaseXMLWriter.writeXMLBody(BaseXMLWriter.java:500) 
at com.hp.hpl.jena.xmloutput.impl.BaseXMLWriter.write(BaseXMLWriter.java:472) 
at com.hp.hpl.jena.xmloutput.impl.BaseXMLWriter.write(BaseXMLWriter.java:458) 
at com.hp.hpl.jena.rdf.model.impl.ModelCom.write(ModelCom.java:271) 
at com.hp.hpl.jena.ontology.impl.OntModelImpl.write(OntModelImpl.java:2552) 

나는 "http://www.w3.org/2002/07/owl#"의 형식이 거북이는 것을 알고 하지만 나는 RDF/XML에 온톨로지를 갖고 싶습니다. 링크 대신에 무엇을 써야할지 모르겠습니다. 다른 링크를 시도했지만 매번 다른 오류가 발생했습니다. SOURCE가 실제 링크 여야합니까?

답장을 보내려면 Thaks!

답변

1

마지막으로 솔루션을 찾을 수있었습니다. 그리고 생각보다 쉬웠습니다! 문제는 수업을 만드는 것이 었습니다. 내 코드이었다

ontology.createClass(word); 

내가 써야했다 :

ontology.createClass(NS+word); 

케이크 한 조각!

+0

기본적으로 이러한 종류의 오류에 대한 해결책은 "네임 스페이스"를 추가하는 것입니다. 그것의 클래스 또는 개별 Subject, object, predicate (Resources). 네임 스페이스가 없으면 RDF/XML로 온톨로지를 작성할 수 없습니다. –

1

거북이로 읽어보십시오 -.. 출력 RDF가/XML 될 것입니다 (하지만 읽으면서 깔끔한 내부가 트리플로, 아니 몇 가지 구체적인 구문에서 개최되는 RDF/XML-약칭을 사용할

+0

감사합니다. Andy. TURTLE을 사용하여 실행할 수도 있지만 출력은 TURTLE에도 있습니다! – Mahdieh

0

온톨로지를 읽으려면 "RDF/XML"이 아닌 이 아닌 다른 형식을 선택하십시오. 출력 형식을 지정할 수있는 곳 (lang)을 선택하고 "RDF/XML-ABBREV"을 다음과 같이 사용하십시오 (lang). AndyS가 말합니다.

단순한 문자열을 사용했기 때문에 예외입니다 (분명히 "d")은 전체 절대 URI 만 허용되는 위치 (예 : "http://example.com/mydata#d")에 있습니다. 아마도 createResource()로 전화를 걸었을 것입니까?

+0

제안 해 주셔서 감사합니다 cygri.I TURTLE에 아무런 문제가 없으며 완벽하게 작동하지만 RDF/XML로 출력하고 싶습니다. 그리고 ontology.write (새 FileOutputStream (file), "RDF/XML-ABBREV")를 작성하십시오. 불행히도 나는 당신의 마지막 질문을 이해할 수 없었다. – Mahdieh

+0

오류는 코드의'/////// some actions' 부분에 있습니다. – cygri

+0

아니요, 오류는 로컬 파일에 정확하게 기록됩니다! 신중하게 추적했습니다. – Mahdieh

관련 문제