HajoRijgersberg/OM

Validation fails because of annotation properties

Opened this issue · 3 comments

After fixing the issues discussed in #59 I still get a large number of errors from validating the OM ontology. These all seem to have to do with annotations on the Ontology itself, for example:

021-10-22 10:16:57,848 WARN  uk.ac.manchester.cs.owl.owlapi.OWLOntologyManagerImpl - Illegal redeclarations of entities: reuse of entity http://xmlns.com/foaf/0.1/jabberID in punning not allowed [Declaration(ObjectProperty(<http://xmlns.com/foaf/0.1/jabberID>)), Declaration(DataProperty(<http://xmlns.com/foaf/0.1/jabberID>))]

A little more investigation reveals this posting which suggests we would need a more stringent version of the FOAF ontology, because the standard FOAF ontology types property ranges permissively in a way that OWL DL forbids. Likely this could be fixed by extracting a subset of the annotation properties used, and maybe importing this subset instead of the full FOAF and other ontologies. Users of DL could use a specific catalog.xml file for the purpose.

See #62 for proposed fix.

Hi, sorry for my late reply (again) and thanks so much (again) for your diving into this and the proposed fix!
I have just looked at the proposed changes, and it seems there really are a lot changes (see 950fc5e), but almost all of them appear to have remained the same, i.e., not changed. Do I see that correctly? Do I see correctly that the below is the real and only change? Just for my understanding - really appreciate your contribution and, once I understand the above , I'll certainly adopt it! :)

  <!-- Annotations used here -->
  <owl:AnnotationProperty rdf:about="http://purl.org/dc/elements/1.1/isPartOf"/>
  <owl:AnnotationProperty rdf:about="http://purl.org/dc/elements/1.1/publisher"/>
  <owl:AnnotationProperty rdf:about="http://purl.org/dc/elements/1.1/subject"/>
  <owl:AnnotationProperty rdf:about="http://purl.org/dc/elements/1.1/title"/>
  <owl:AnnotationProperty rdf:about="http://purl.org/dc/terms/license"/>
  <owl:AnnotationProperty rdf:about="http://purl.org/ontology/bibo/authorList"/>
  <owl:AnnotationProperty rdf:about="http://purl.org/ontology/bibo/chapter"/>
  <owl:AnnotationProperty rdf:about="http://purl.org/ontology/bibo/degree"/>
  <owl:AnnotationProperty rdf:about="http://purl.org/ontology/bibo/edition"/>
  <owl:AnnotationProperty rdf:about="http://purl.org/ontology/bibo/isbn10"/>
  <owl:AnnotationProperty rdf:about="http://purl.org/ontology/bibo/isbn13"/>
  <owl:AnnotationProperty rdf:about="http://purl.org/ontology/bibo/issuer"/>
  <owl:AnnotationProperty rdf:about="http://purl.org/ontology/bibo/pageEnd"/>
  <owl:AnnotationProperty rdf:about="http://purl.org/ontology/bibo/pageStart"/>
  <owl:AnnotationProperty rdf:about="http://purl.org/ontology/bibo/reproducedIn"/>
  <owl:AnnotationProperty rdf:about="http://purl.org/ontology/bibo/shortTitle"/>
  <owl:AnnotationProperty rdf:about="http://purl.org/ontology/bibo/uri"/>
  <owl:AnnotationProperty rdf:about="http://purl.org/ontology/bibo/volume"/>
  <owl:AnnotationProperty rdf:about="http://xmlns.com/foaf/0.1/based_near"/>
  <owl:AnnotationProperty rdf:about="http://xmlns.com/foaf/0.1/name"/>

  <!-- classes used in annotations -->
  <owl:Class rdf:about="http://purl.org/ontology/bibo/Article"/>
  <owl:Class rdf:about="http://purl.org/ontology/bibo/Book"/>
  <owl:Class rdf:about="http://purl.org/ontology/bibo/BookSection"/>
  <owl:Class rdf:about="http://purl.org/ontology/bibo/Chapter"/>
  <owl:Class rdf:about="http://purl.org/ontology/bibo/Document"/>
  <owl:Class rdf:about="http://purl.org/ontology/bibo/Journal"/>
  <owl:Class rdf:about="http://purl.org/ontology/bibo/Standard"/>
  <owl:Class rdf:about="http://purl.org/ontology/bibo/Thesis"/>
  <owl:Class rdf:about="http://xmlns.com/foaf/0.1/Organization"/>
  <owl:Class rdf:about="http://xmlns.com/foaf/0.1/Person"/>

I think my solution to this problem is wrong.

Instead, probably OM should offer a catalog file that loads these Dublin Core and Bibo ontologies from a file giving only the above subset of property specifications.

Then if one wants to work with OWL full, or just not do classification, one can load the complete forms of these ontologies. On the other hand, if one wants to be able to work with OWL DL, one could use the catalog file, and load a subset file defines all of these properties as AnnotationProperty, and the classifier will work fine.

Alternatively, one could push the annotations out of the main OWL file for OM-2 and put them in a second file that gives the meta-information separately. That would also work for people using OWL DL or EL.