2016-07-07 7 views
0

Ich bin neu in Onotlogy und Java. Ich lerne es jetzt und habe ein gewisses theoretisches Wissen. Ich benutze "Apache-jena-3.1.0" in Eclipse und Protege-Editor 5.0.0 Beta 23.Kann Protege Ontologie in Jena nicht lesen

Zunächst einmal habe ich eine einfache Ontologie in Jena erstellt. Etwas wie das:

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

Es funktioniert gut. Ich kann gespeicherte Ontologie in meiner Anwendung lesen und im Protege-Editor öffnen.

Dann habe ich in Protege einfache Ontologie erstellt. Gespeichert in RDF/XML-Syntax. Ich versuchte, es in meiner Anwendung durch den Code zu öffnen:

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

Es funktionierte nicht. Eclipse hat mir eine Menge Fehler geschickt:

Ausnahme im Thread "main" org.apache.jena.riot.RiotException: [line: 271, col: 120] {E210} Kodierungsfehler mit nicht-ASCII-Zeichen. bei org.apache.jena.riot.system.ErrorHandlerFactory $ ErrorHandlerStd.error (ErrorHandlerFactory.java:128) bei org.apache.jena.riot.lang.LangRDFXML $ ErrorHandlerBridge.error (LangRDFXML.java:246) bei org.apache.jena.rdfxml.xmlinput.impl.ARPSaxErrorHandler.error (ARPSaxErrorHandler.java:37) bei org.apache.jena.rdfxml.xmlinput.impl.XMLHandler.warning (XMLHandler.java:196) bei org. apache.jena.rdfxml.xmlinput.impl.XMLHandler.warning (XMLHandler.java:173) bei org.apache.jena.rdfxml.xmlinput.impl.XMLHandler.warning (XMLHandler.java:168) bei org.apache. jena.rdfxml.xmlinput.impl.ParserSupport.warning (ParserSupport.java:207) bei org.apache.jena.rdfxml.xmlinput.impl.ParserSupport.checkEncoding (ParserSupport.java:192) um org.apache.jena.rdfxml.xmlinput.impl.URIReference.resolve (URIReference.java:167) bei org.apache.jena.rdfxml.xmlinput.states.WantDescription.startElement (WantDescription.java:63) bei org. apache.jena.rdfxml.xmlinput.impl.XMLHandler.startElement (XMLHandler.java:111) bei org.apache.xerces.parsers.AbstractSAXParser.startElement (Unbekannte Quelle) bei org.apache.xerces.impl.XMLNamespaceBinder.handleStartElement (Unknown Source) bei org.apache.xerces.impl.XMLNamespaceBinder.startElement (Unknown Source) bei org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement (Unknown Source) bei org.apache.xerces.impl.XMLDocumentFragmentScannerImpl $ FragmentContentDispatcher.dispatch (Unbekannte Quelle) bei org.apache.xerces.impl.XMLDocumentFragmentS cannerImpl.scanDocument (Unbekannte Quelle) bei org.apache.xerces.parsers.DTDConfiguration.parse (Unbekannte Quelle) bei org.apache.xerces.parsers.DTDConfiguration.parse (Unbekannte Quelle) bei org.apache.xerces.parsers .XMLParser.parse (Unbekannte Quelle) bei org.apache.xerces.parsers.AbstractSAXParser.parse (Unbekannte Quelle) bei org.apache.jena.rdfxml.xmlinput.impl.RDFXMLParser.parse (RDFXMLParser.java:150) at org.apache.jena.rdfxml.xmlinput.impl.RDFXMLParser.parse (RDFXMLParser.java:134) bei org.apache.jena.rdfxml.xmlinput.ARP.load (ARP.java:99) bei org.apache .jena.riot.lang.LangRDFXML.parse (LangRDFXML.java:140) bei org.apache.jena.riot.RDFParserRegistry $ ReaderRIOTLang.read (RDFParserRegistry.java:187) bei org.apache.jena.riot.RDFDataMgr.process (RDFDataMgr.java:873) bei org.apache.jena.riot.RDFDataMgr.read (RDFDataMgr.java:288) bei org.apache.jena.riot. RDFDataMgr.read (RDFDataMgr.java:273) bei org.apache.jena.riot.adapters.RDFReaderRIOT.read (RDFReaderRIOT.java: 62) bei org.apache.jena.rfd.model.impl.ModelCom.read (ModelCom.java:245) bei org.apache.jena.ontology.impl.OntModelImpl.read (OntModelImpl.java:2117) bei asutp_lassification.main (asutp_lassification.java:14)

Was das Problem ist? Wie kann ich die Protege-Ontologie in meiner Jena-Anwendung öffnen?

Vielen Dank!

+0

Ich habe verschiedene "OntModelSpec" ausprobiert –

+0

Ich bezweifle, dass Jena Dinge im OWL/XML-Format lesen kann. Sie müssen die Ontologie von Protege in einem RDF-Serialisierungsformat wie Turtle oder RDF/XML speichern. Die Spur * sieht jedoch so aus, als würde sie versuchen, das XML zu lesen. Die Nachricht sagt "Kodierungsfehler mit nicht-ASCII-Zeichen." Hast du nicht-ASCII-Zeichen drin? –

+0

Wie ich schrieb - ich habe versucht, in einem RDF/XML-Format zu speichern - das gleiche Problem. Nach diesen Charakteren gesucht, aber nicht gefunden. Habe es hier geteilt: https://drive.google.com/open?id=0B8XNVi6pdRrgLWhHT3p2aEdEaDQ –

Antwort

1

Zeile 271 hat einen URI mit Fragment mit "# АСУ1" was wenn ich mir die Bytes ansehe ist in der Tat kein ASCII (sie sind d0 90 d0 a1 d0 a3 in UTF-8 Kodierung).

RDF/XML ist ein alter Standard und benötigt URIs (streng "RDF URI References", was bedeutet, dass IRIs kodiert werden müssen). Turtle ist besser im Umgang mit IRIs direkt.

+0

Vielen Dank! Das Problem lag in diesen Symbolen. Ich habe über sie nachgedacht und einzelne Personen aus der Ontologie von Protoge gelöscht, aber nur unter die "Ding" -Klasse gestellt. Es ist jetzt in Ordnung und funktioniert perfekt. Ich werde an Turtle denken. –