我是onotlogy和Java的新手。我現在學習它,並有一些理論知識。 我在Eclipse和Protege editor 5.0.0 beta 23中使用「apache-jena-3.1.0」。無法讀取Jena中的Protege本體
首先,我在耶拿創建了一個簡單的本體論。類似的東西:
public static void main(String[] args) {
OntModel m = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);
...
OntClass gen1 = m.createClass(st + "Generation_1");
OntClass gen2 = m.createClass(st + "Generation_2");
...
ObjectProperty hasParent = m.createObjectProperty(st + "hasParent");
...
m.write(System.out);
try {
m.write(new FileWriter("C:/java/family1_RDF.owl"), "RDF/XML");
m.write(new FileWriter ("C:/java/family2_N3.owl"), "N3");
} catch (IOException e) {
e.printStackTrace();
}
它運作良好。我可以在我的應用程序中讀取保存的本體,並在Protege編輯器中打開它。
然後我在Protege中創建了簡單的本體。保存在RDF/XML語法中。 我試圖通過代碼在我的應用程序打開它:
OntModel base = ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM_RDFS_INF);
try {
base.read(new FileReader ("C:/java/asutp_class.owl"), "OWL/XML");
} catch (IOException e) {
e.printStackTrace();
}
base.write(System.out);
它沒有工作。 Eclipse向我發送了很多錯誤:
線程「main」中的異常org.apache.jena.riot.RiotException:[line:271,col:120] {E210}使用非ascii字符編碼錯誤。 在org.apache.jena.riot.system.ErrorHandlerFactory $ ErrorHandlerStd.error(ErrorHandlerFactory.java:128) 在org.apache.jena.riot.lang.LangRDFXML $ ErrorHandlerBridge.error(LangRDFXML.java:246) 在org.apache.jena.rdfxml.xmlinput.impl.ARPSaxErrorHandler.error(ARPSaxErrorHandler.java:37) 在org.apache.jena.rdfxml.xmlinput.impl.XMLHandler.warning(XMLHandler.java:196) 的組織。 apache.jena.rdfxml.xmlinput.impl.XMLHandler.warning(XMLHandler.java:173) at org.apache.jena.rdfxml.xmlinput.impl.XMLHandler.warning(XMLHandler.java:168) at org.apache。 jena.rdfxml.xmlinput.impl.ParserSupport.warning(ParserSupport.java:207) 在org.apache.jena.rdfxml.xmlinput.impl.ParserSupport.checkEncoding(ParserSupport.java:192) 在org.apache.jena.rdfxml.xmlinput.impl.URIReference.resolve(URIReference.java:167) 在org.apache.jena.rdfxml.xmlinput.states.WantDescription.startElement(WantDescription.java:63) 的組織。 apache.jena.rdfxml.xmlinput.impl.XMLHandler.startElement(XMLHandler.java:111) at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source) at org.apache.xerces.impl.XMLNamespaceBinder.handleStartElement (來源不明) 在org.apache.xerces.impl.XMLNamespaceBinder.startElement(來源不明) 在org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(來源不明) 在org.apache.xerces.impl.XMLDocumentFragmentScannerImpl $ FragmentContentDispatcher.dispatch(未知來源) at org.apache.xerces.impl.XMLDocumentFragmentS cannerImpl.scanDocument(Unknown Source) at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source) at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source) at org.apache.xerces.parsers .XMLParser.parse(Unknown Source) at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) at org.apache.jena.rdfxml.xmlinput.impl.RDFXMLParser.parse(RDFXMLParser.java:150) 在org.apache.jena.rdfxml.xmlinput.impl.RDFXMLParser.parse(RDFXMLParser.java:134) 在org.apache.jena.rdfxml.xmlinput.ARP.load(ARP.java:99) 在org.apache .jena.riot.lang.LangRDFXML.parse(LangRDFXML.java:140) 在org.apache.jena.riot.RDFParserRegistry $ ReaderRIOTLang.read(RDFParserRegistry.java:187) at org.apache.jena.riot.RDFDataMgr.process(RDFDataMgr.java:873) at org.apache.jena.riot.RDFDataMgr.read(RDFDataMgr.java:288) at org.apache.jena.riot。 RDFDataMgr.read(RDFDataMgr.java:273) at org.apache.jena.riot.adapters.RDFReaderRIOT.read(RDFReaderRIOT。的java:62) 在org.apache.jena.rdf.model.impl.ModelCom.read(ModelCom.java:245) 在org.apache.jena.ontology.impl.OntModelImpl.read(OntModelImpl.java:2117) 在asutp_lassification.main(asutp_lassification.java:14)
的問題是什麼?我如何在我的耶拿申請中打開Protege的本體論?
非常感謝!
我嘗試了不同的「OntModelSpec」 –
我懷疑耶拿可以在OWL/XML格式讀取的東西。您需要將Protege中的本體保存爲RDF序列化格式,如Turtle或RDF/XML。也就是說,trace *看起來像是試圖讀取XML。該消息說:「使用非ascii字符編碼錯誤。」那裏有非ascii角色嗎? –
正如我寫的 - 我試圖保存在RDF/XML格式 - 同樣的問題。看過那個角色,但沒有找到。這裏分享它:https://drive.google.com/open?id=0B8XNVi6pdRrgLWhHT3p2aEdEaDQ –