Jena multiple rdfs:label
java, jena, ontology, owl, rdfs
Solution
That's an OWL2 XML formatted file. Jena does't support that format, but it does support OWL in RDF/XML.
In other words it's expecting the wrong flavour of XML and getting confused.
Try saving it in another format.
Problem
I'm new to Jena and Owl I was given an ontology. I can open it with Protege 4.2 without any problems but when I try to open it with Jena I get: `Exception in thread "main" org.apache.jena.riot.RiotException: {E201} Multiple children of property element`. I have been looking a bit in my Ontology what it could be and I have noticed that some elements have more than one Label in a language for example: ``` <AnnotationAssertion> <AnnotationProperty abbreviatedIRI="rdfs:label"/> <AbbreviatedIRI>atc:A02BX02</AbbreviatedIRI> <Literal xml:lang="no" datatypeIRI="&rdf;PlainLiteral">Sukralfat</Literal> </AnnotationAssertion> <AnnotationAssertion> <AnnotationProperty abbreviatedIRI="rdfs:label"/> <AbbreviatedIRI>atc:A02BX02</AbbreviatedIRI> <Literal xml:lang="no" datatypeIRI="&rdf;PlainLiteral">antepsin</Literal> </AnnotationAssertion> <AnnotationAssertion> <AnnotationProperty abbreviatedIRI="rdfs:label"/> <AbbreviatedIRI>atc:A02BX02</AbbreviatedIRI> <Literal datatypeIRI="&xsd;string">sucralfate</Literal> </AnnotationAssertion> <AnnotationAssertion> <AnnotationProperty abbreviatedIRI="rdfs:label"/> <AbbreviatedIRI>atc:A02BX02</AbbreviatedIRI> <Literal xml:lang="no" datatypeIRI="&rdf;PlainLiteral">sukralfat</Literal> </AnnotationAssertion> ``` Could this cause the problem? All the code I use works with other ontologies so I think it really comes from this ontology. Do you know what could cause this exception? Edit So I got down to a minimized case and still get the same error: ``` <?xml version="1.0"?> <!DOCTYPE Ontology [ <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" > <!ENTITY xml "http://www.w3.org/XML/1998/namespace" > <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" > <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" > ]> <Ontology xmlns="http://www.w3.org/2002/07/owl#" xml:base="http://www.ebi.ac.uk/Rebholz-srv/atc/public/ontologies/atc.owl" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xml="http://www.w3.org/XML/1998/namespace" ontologyIRI="http://www.ebi.ac.uk/Rebholz-srv/atc/public/ontologies/atc.owl"> <Prefix name="" IRI="http://www.ebi.ac.uk/Rebholz-srv/atc/public/ontologies/atc.owl#"/> <Prefix name="atc" IRI="http://www.legemiddelverket.no/Legemiddelsoek/Sider/Default.aspx#"/> <Prefix name="owl" IRI="http://www.w3.org/2002/07/owl#"/> <Prefix name="rdf" IRI="http://www.w3.org/1999/02/22-rdf-syntax-ns#"/> <Prefix name="xml" IRI="http://www.w3.org/XML/1998/namespace"/> <Prefix name="xsd" IRI="http://www.w3.org/2001/XMLSchema#"/> <Prefix name="rdfs" IRI="http://www.w3.org/2000/01/rdf-schema#"/> <Declaration> <Class abbreviatedIRI="atc:J"/> </Declaration> <AnnotationAssertion> <AnnotationProperty abbreviatedIRI="rdfs:label"/> <AbbreviatedIRI>atc:J</AbbreviatedIRI> <Literal datatypeIRI="&xsd;string">ANTIINFECTIVES FOR SYSTEMIC USE</Literal> </AnnotationAssertion> </Ontology> ``` Here is the java code: ``` InputStream in = FileManager.get().open(filename); if (in == null) { throw new IllegalArgumentException("File: " + filename + " not found"); } model = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM); model.read(in, null); try { in.close(); } catch (IOException e) { System.err.println("Couldn't close the inputStream"); } ``` Does this help? I really don't have any idea anymore...