- From: Michael DeBellis <mdebellissf@gmail.com>
- Date: Sun, 19 Oct 2025 19:38:57 -0700
- To: public-prov-comments@w3.org
- Cc: User support for WebProtege and Protege Desktop <protege-user@lists.stanford.edu>
- Message-ID: <CALGFikeQ7Kbq8pQ5MGZrhMX5owuwEswV=Sk49PK0ZfP8fEupQA@mail.gmail.com>
I'm copying the Protege list as well as Prov in case some people there have
any feedback. For the attached ontology, I started by doing "Load Ontology
from URL" in Protege and loaded: https://www.w3.org/ns/prov-o#
The resulting ontology had warnings that I think were caused by defining
properties as annotation properties as well as object properties:
INFO 18:56:59
WARN 18:57:17 Illegal redeclarations of entities: reuse of entity
http://www.w3.org/ns/prov#wasRevisionOf in punning not allowed
[Declaration(ObjectProperty(<http://www.w3.org/ns/prov#wasRevisionOf>)),
Declaration(AnnotationProperty(<http://www.w3.org/ns/prov#wasRevisionOf>))]
WARN 18:57:17 Illegal redeclarations of entities: reuse of entity
http://www.w3.org/ns/prov#specializationOf in punning not allowed
[Declaration(AnnotationProperty(<http://www.w3.org/ns/prov#specializationOf>)),
Declaration(ObjectProperty(<http://www.w3.org/ns/prov#specializationOf>))]
INFO 18:57:18 -------------------- Importing ontology and imports
closure --------------------
INFO 18:57:18 Processing http://www.w3.org/ns/prov-o-20130430
WARN 18:57:18 Illegal redeclarations of entities: reuse of entity
http://www.w3.org/ns/prov#wasRevisionOf in punning not allowed
[Declaration(ObjectProperty(<http://www.w3.org/ns/prov#wasRevisionOf>)),
Declaration(AnnotationProperty(<http://www.w3.org/ns/prov#wasRevisionOf>))]
WARN 18:57:18 Illegal redeclarations of entities: reuse of entity
http://www.w3.org/ns/prov#specializationOf in punning not allowed
[Declaration(AnnotationProperty(<http://www.w3.org/ns/prov#specializationOf>)),
Declaration(ObjectProperty(<http://www.w3.org/ns/prov#specializationOf>))]
INFO 18:57:18 Finished loading https://www.w3.org/ns/prov-o#
I think this is caused by this definition:
:qualifiedRevision
a owl:ObjectProperty ;
rdfs:comment "If this Entity prov:wasRevisionOf Entity :e, then it
can qualify how it was revised using prov:qualifiedRevision [ a
prov:Revision; prov:entity :e; :foo :bar ]."@en ;
rdfs:domain :Entity ;
rdfs:isDefinedBy <http://www.w3.org/ns/prov-o#> ;
rdfs:label "qualifiedRevision" ;
rdfs:range :Revision ;
rdfs:subPropertyOf :qualifiedInfluence ;
:category "qualified" ;
:component "derivations" ;
:inverse "revisedEntity" ;
:sharesDefinitionWith :Revision ;
:unqualifiedForm :wasRevisionOf .
And this:
:wasRevisionOf
a owl:AnnotationProperty, owl:ObjectProperty ;
rdfs:comment "A revision is a derivation that revises an entity into a
revised version."@en ;
rdfs:domain :Entity ;
rdfs:isDefinedBy http://www.w3.org/ns/prov-o# ;
rdfs:label "wasRevisionOf" ;
rdfs:range :Entity ;
rdfs:subPropertyOf :wasDerivedFrom ;
owl:propertyChainAxiom (:qualifiedRevision
:entity
) ;
:category "expanded" ;
:component "derivations" ;
:inverse "hadRevision" ;
:qualifiedForm :Revision, :qualifiedRevision .
It seems to me that the answer must be to remove either the annotation
properties or the object properties. I think what is consistent with Prov
is to remove the annotation properties. Although, what I would prefer is to
remove the object properties and use the annotation properties, so that we
don't need to use puns. But I think SKOS (which I also plan to load with
Prov and Dublin Core, I'm sort of putting together a metadata upper model)
requires us to use puns anyway and I also think that is what Prov requires,
in spite of that definition which I think is an error since you can't
declare something to be an annotation and object property. Unless you want
OWL Full which if you are going to use you are essentially throwing away
the reasoner anyway (which negates the value of using object properties
over annotation properties).
But I could be wrong, please tell me if I am. I've never gone into this
much detail trying to load several of these together so it could be
something I've done. I checked the file at that URL because I think I may
have defined some properties from Prov to be annotation properties for
previous work
But I don't think that should be impacting what I'm doing now since I
loaded Prov directly from the URL without creating any ontology or anything
in Protege before hand.
TL/DR: I think there are warnings loading Prov based on defining one or
more properties as annotation and object properties and my plan is to
remove the annotation property axioms to be OWL DL compliant which I think
is consistent with the Prov spec.
Appreciate any feedback.
Cheers,
Michael DeBellis
https://www.michaeldebellis.com/blog
Attachments
- application/octet-stream attachment: prov.ttl
Received on Monday, 20 October 2025 11:58:42 UTC