W3C home > Mailing lists > Public > public-prov-comments@w3.org > May 2017

Re: Illegal punning in prov-o.ttl, prov.ttl imports broken

From: Ivan Herman <ivan@w3.org>
Date: Fri, 12 May 2017 15:41:45 +0200
Cc: Stian Soiland-Reyes <soiland-reyes@manchester.ac.uk>, "public-prov-comments@w3.org" <public-prov-comments@w3.org>
Message-Id: <8E904D67-23D4-4269-A36D-758CC4ECEE11@w3.org>
To: Paul Groth <pgroth@gmail.com>

> On 12 May 2017, at 15:34, Paul Groth <pgroth@gmail.com <mailto:pgroth@gmail.com>> wrote:
> 
> Hi Stian,
> 
> Can we break these down into the specific changes you want, namely, the removal of
> 
>    :wasRevisionOf  a owl:AnnotationProperty, ;
>   :specializationOf  a owl:AnnotationProperty,
> 
> These will have to be done in an errata? I believe we can update the ontologies directly but need to see what Ivan suggests here.

We can update the ontologies themselves (better coordinate with Tim, though, he has his own github repo, I believe, where he takes care of these).

However… I am a little bit uneasy. First of all, it must be recorded in the errata, that is for sure. But I would also prefer to see some record of wide consensus that this is indeed what has to be done (and record the consensus in the relevant erratum) before changing the ontology files, because we are, essentially, creating a discrepancy between the standard and the ttl files.

I hope this helps...

> 
> Thanks for catching this,

+1

Ivan

> Paul
> 
> 
> 
> On Thu, May 4, 2017 at 5:33 PM, Stian Soiland-Reyes <soiland-reyes@manchester.ac.uk <mailto:soiland-reyes@manchester.ac.uk>> wrote:
> Hi, hope you are all well!
> 
> It was raised to my attention [1] that our http://www.w3.org/ns/prov-o <http://www.w3.org/ns/prov-o>
> (aka https://www.w3.org/ns/prov-o.ttl <https://www.w3.org/ns/prov-o.ttl> or
> https://www.w3.org/ns/prov-o.rdf <https://www.w3.org/ns/prov-o.rdf>) has an illegal OWL 2 punning of an
> annotation property and object property, and that this causes error
> messages (but no apparant issues) when loading the ontology in Protege -
> reported by the underlying OWLAPI.
> 
> Using my updated OWL2 ProfileChecker 1.1.0 [2] (which uses OWLAPI 5.1):
> 
>     stain@biggiebuntu:~$ profilechecker http://www.w3.org/ns/prov-o <http://www.w3.org/ns/prov-o> --all
>     [main] ERROR uk.ac.manchester.cs.owl.owlapi.OWLOntologyManagerImpl -
>     Illegal redeclarations of entities: reuse of entity
>     http://www.w3.org/ns/prov#wasRevisionOf <http://www.w3.org/ns/prov#wasRevisionOf> in punning not allowed
>     [Declaration(ObjectProperty(<http://www.w3.org/ns/prov#wasRevisionOf <http://www.w3.org/ns/prov#wasRevisionOf>>)),
>     Declaration(AnnotationProperty(<http://www.w3.org/ns/prov#wasRevisionOf <http://www.w3.org/ns/prov#wasRevisionOf>>))]
>     [main] ERROR uk.ac.manchester.cs.owl.owlapi.OWLOntologyManagerImpl -
>     Illegal redeclarations of entities: reuse of entity
>     http://www.w3.org/ns/prov#specializationOf <http://www.w3.org/ns/prov#specializationOf> in punning not allowed
>     [Declaration(ObjectProperty(<http://www.w3.org/ns/prov#specializationOf <http://www.w3.org/ns/prov#specializationOf>>)),
>     Declaration(AnnotationProperty(<http://www.w3.org/ns/prov#specializationOf <http://www.w3.org/ns/prov#specializationOf>>))]
> 
>     OWL2_DL: 9 violations
>     OWL2_QL: 29 violations
>     OWL2_EL: 32 violations
>     OWL2_RL: 16 violations
>     OWL2_FULL: 9 violations
> 
> See gist [3] for all the OWL2 Full violations.
> 
> 
> This seems to be because our prov-o.ttl (and .rdf) declares
> prov:wasRevisionOf and prov:specializationOf as both ObjectProperty and
> AnnotationProperty.
> 
> 
>     :wasRevisionOf
>         a owl:AnnotationProperty, owl:ObjectProperty ;
> 
> 
>     :specializationOf
>         a owl:AnnotationProperty, owl:ObjectProperty ;
> 
> While this punning is allowed for OWL2 Full - it is
> not allowed in RDF serializations of OWL ontologies [4]
> because an IRI or BlankNode must be assigned  to "at most one" of object
> property expressions, data property expression or annotation property.
> 
> 
> I think we did the above because we also declare provenance of the
> owl:Ontology within the same file:
> 
> 
>   <http://www.w3.org/ns/prov-o# <http://www.w3.org/ns/prov-o#>>
>     a owl:Ontology ;
>     rdfs:label "W3C PROVenance Interchange Ontology (PROV-O)"@en ;
>     rdfs:seeAlso <http://www.w3.org/TR/prov-o/ <http://www.w3.org/TR/prov-o/>>, <http://www.w3.org/ns/prov <http://www.w3.org/ns/prov>> ;
>     owl:versionIRI <http://www.w3.org/ns/prov-o-20130430 <http://www.w3.org/ns/prov-o-20130430>> ;
>     owl:versionInfo "Recommendation version 2013-04-30"@en ;
>     :specializationOf <http://www.w3.org/ns/prov-o <http://www.w3.org/ns/prov-o>> ;
>     :wasRevisionOf <http://www.w3.org/ns/prov-o-20120312 <http://www.w3.org/ns/prov-o-20120312>> .
> 
> Ironically the AnnotationProperty declaration is something Protege/OWLAPI added
> automatically at the time because of this - and in fact if "a
> owl:AnnotationProperty" is not implicitly declared (but it is still stated on
> the owl:Ontology), then there is no warning at all from OWLAPI:
> 
>     stain@biggiebuntu:~/Desktop$ profilechecker prov-o.ttl --all
>     OWL2_DL: OK
>     OWL2_QL: 20 violations
>     OWL2_EL: 23 violations
>     OWL2_RL: 7 violations
>     OWL2_FULL: OK
> 
> Note how the above now is OWL2 DL compliant again.  I double-checked the
> history - and when we did profile checking the OWLAPI didn't do this
> punning check - it was introduced just a few months after our release.
> 
> 
> So I would suggest that we fix prov-o.ttl and prov-o.rdf to remove the explicit
> AnnotationProperty statement.  If you agree we can also remove it from the
> statements on the owl:Ontology itself (that is anyway covered by the provenance
> file) - although for Protege/OWLAPI that doesn't seem necessary.
> 
> ----
> 
> There's a larger issue, in that the "all in one go"
> http://www.w3.org/ns/prov <http://www.w3.org/ns/prov> (aka https://www.w3.org/ns/prov.ttl <https://www.w3.org/ns/prov.ttl>) declares:
> 
> 
>     <http://www.w3.org/ns/prov# <http://www.w3.org/ns/prov#>>
>         a owl:Ontology ;
> 
> and also https://www.w3.org/ns/prov-o.ttl <https://www.w3.org/ns/prov-o.ttl> declares:
> 
> 
>     <http://www.w3.org/ns/prov# <http://www.w3.org/ns/prov#>>
>         a owl:Ontology .
> 
> This causes loading exceptions in OWLAPI 5 [6], including:
> 
>     Exception in thread "main" org.semanticweb.owlapi.model.UnloadableImportException: Could not load imported ontology: <http://www.w3.org/ns/prov-aq# <http://www.w3.org/ns/prov-aq#>> Cause: Ontology already exists. OntologyID(OntologyIRI(<http://www.w3.org/ns/prov# <http://www.w3.org/ns/prov#>>) VersionIRI(<null>))
> 
> 
> This prevents http://www.w3.org/ns/prov <http://www.w3.org/ns/prov> being used as "owl:imports" in
> other ontologies.
> 
> 
> Given that we use "/ns/prov-o#" as name in:
> 
>     rdfs:isDefinedBy <http://www.w3.org/ns/prov-o# <http://www.w3.org/ns/prov-o#>> ;
> 
> then I think this should be the owl:Ontology IRI within prov-o.ttl and
> friends - that is the style we've used say in
> http://www.w3.org/ns/prov-o-inverses <http://www.w3.org/ns/prov-o-inverses>
> and would prevent conflict with prov.ttl.
> 
> 
> 
> I also wonder why prov.ttl both does an owl:imports AND re-declares all the
> concepts (and multiple owl:Ontology), which seems a bit pointless, as well as
> causing their owl:Ontology to be declared both within prov.ttl and prov-o.ttl
> -- perhaps that also gives errors.  Suggested fix is for prov.ttl and friends
> to only have the imports - or at least to not have repeated owl:Ontology
> declarations.
> 
> 
> 
> [1] https://github.com/evoinfo/miapa/issues/25 <https://github.com/evoinfo/miapa/issues/25>
> [2] https://github.com/stain/profilechecker/releases/tag/1.1.0 <https://github.com/stain/profilechecker/releases/tag/1.1.0>
> [3] https://gist.github.com/stain/1c61313ab1b5349d3cba6467c7c51a2d <https://gist.github.com/stain/1c61313ab1b5349d3cba6467c7c51a2d>
> [4] https://sourceforge.net/p/owlapi/mailman/message/31757311/ <https://sourceforge.net/p/owlapi/mailman/message/31757311/>
> [5] https://www.w3.org/TR/owl2-mapping-to-rdf/#Populating_an_Ontology <https://www.w3.org/TR/owl2-mapping-to-rdf/#Populating_an_Ontology>
> [6] https://gist.github.com/stain/9f1c5caeb32b618547ca63612edfd6e7 <https://gist.github.com/stain/9f1c5caeb32b618547ca63612edfd6e7>
> 
> 
> --
> Stian Soiland-Reyes
> The University of Manchester
> http://www.esciencelab.org.uk/ <http://www.esciencelab.org.uk/>
> http://orcid.org/0000-0001-9842-9718 <http://orcid.org/0000-0001-9842-9718>
> 
> 
> 


----
Ivan Herman, W3C
Publishing@W3C Technical Lead
Home: http://www.w3.org/People/Ivan/ <http://www.w3.org/People/Ivan/>
mobile: +31-641044153
ORCID ID: http://orcid.org/0000-0003-0782-2704 <http://orcid.org/0000-0003-0782-2704>





Received on Friday, 12 May 2017 13:42:03 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 16:50:15 UTC