Properties and reified classes with same URI

26 views
Skip to first unread message

Michael Phillips

unread,
Nov 18, 2025, 4:27:09 PMNov 18
to TopBraid Suite Users
I am trying to import an ontology which uses the same URI for properties and reified classes. Will this structure cause an import error in EDG?

I am asking because I am trying to import an ontology and getting an error from EDG. The import job then hangs up and I am forced to manually abort. 

This is not my ontology. The designers explain this reasoning here: https://rdafr.fr/ and here is a link to the spec: https://rdafr.fr/ontologie/

As example see https://rdafr.fr/ontologie/#https://rdafr.fr/Elements#P100001r which is both a property and a reified class sharing the same URI like so:

<owl:ObjectProperty rdf:about="https://rdafr.fr/Elements#P100001r">
        <rdfs:domain rdf:resource="https://rdafr.fr/Elements#C100013"/>
        <rdfs:range rdf:resource="https://rdafr.fr/Elements#P100001r"/>
    </owl:ObjectProperty>

I am trying to wrap my head around how this works since it makes the property self-referencing but first I want to understand if this structure will cause an import error in EDG.

Any insights from the community would be most appreciated.

Thank you,
Michael

 

Holger Knublauch

unread,
Nov 18, 2025, 8:04:51 PMNov 18
to topbrai...@googlegroups.com
Hi Michael,

I have never seen this pattern and my first reaction is utter confusion. I would be surprised if TopBraid’s UI makes sense with this mix-up, but who knows :)

From a SHACL point of view, there are no globally declared RDF properties. Every property declaration is local to a shape, with property shapes. So quite possibly SHACL can handle this OK but I find it hard to get my head around this too.

Holger


--
The topics of this mailing list include TopBraid EDG and related technologies such as SHACL.
To post to this group, send email to topbrai...@googlegroups.com
---
You received this message because you are subscribed to the Google Groups "TopBraid Suite Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to topbraid-user...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/topbraid-users/ef1b388b-edb7-440d-8bbf-5e06b1646227n%40googlegroups.com.

Michael DeBellis

unread,
Nov 18, 2025, 8:21:45 PMNov 18
to topbrai...@googlegroups.com
I am trying to import an ontology which uses the same URI for properties and reified classes. Will this structure cause an import error in EDG?

I took a quick look and as I suspected I think they are punning classes and properties in order to use the SKOS broader/narrower object properties. Punning: https://www.w3.org/TR/owl2-new-features/#F12:_Punning  is a basic attempt (emphasis on attempt) to provide meta-modeling in OWL. In a lot of OOP languages you can create properties on classes as well as instances. This can be useful for using and enhancing a metamodel. You can't do this in OWL because that would take you into second order logic and OWL doesn't even support all of First Order Logic (FOL). Of course no language with an automated reasoner can support all of FOL due to the Halting problem, Turing and Church proved that any language with the power of FOL can't support a reasoner that is guaranteed to terminate. That's why the knowledge representation guys created Description Logic. It's a very powerful subset of FOL but still decidable. 

When you pun you create an RDF node that is both a class (or property) and an instance. Then you can define object or data property values on the instance and you are also asserting them on the class or property. So if you want to model in SKOS that Animal is broader than Mammal you have to pun both classes because broader/narrower are object properties. Personally, I think it was a mistake because puns are a pain and can cause issues when you go from one tool to another. Simply using annotation properties is better but SKOS is so popular that if you want to use it on classes or properties you need to pun them. Of course the fact that the same RDF node is an instance of both a class and NamedIndividual is irrelevant to the OWL reasoner because it works with logic not graphs. To the reasoner the puns for Animal and Mammal are just another individual and have no relation to the classes Animal and Mammal. There is no standard for what to make puns an instance of. I usually make them instances of skos:Concept because the only time I use puns is with SKOS and skos:Concept is a decent definition for what classes and properties are. 

Although, I still think it is an error if they really "use the same URI for properties and reified classes". You have have the same IRI (i.e. a pun) for a class and an instance or a property and an instance but you can't use the same IRI for a class and property because the reasoner will see those and it makes no sense to say something is a class (a set) and a relationship (a property). A relation in logic is a set of sets so not a class which is a set of individuals. 

I talk more about the basics of SKOS here: https://www.michaeldebellis.com/post/skosintro

Michael 

Michael Phillips

unread,
Nov 19, 2025, 2:04:20 PMNov 19
to TopBraid Suite Users
Thank you for the thoughtful responses. I have read up on punning and from what I understand it is acceptable to pun Class and NamedIndividual IRIs OR Property and NamedIndividual IRIs, but punning a Class AND Property under the same IRI creates a logical flaw, especially when the definition becomes self-referencing like below. Is this understanding correct?

  a owl:Class ;
  a owl:NamedIndividual ;
  a owl:ObjectProperty ;
  a sh:NodeShape ;
  rdfs:comment "La classe ‘est en relation avec’ permet d’ajouter des assertions sur toutes les propriétés qui expriment une relation entre des instances de deux classes de l’ontologie (et qui, de fait, correspondent aux relations entre instances d’entités du code RDA-FR)."@fr ;
  rdfs:comment "Super propriété de toutes les propriétés qui expriment une relation entre deux instances des classes. La valeur de cette propriété est une instance de la classe identifiée par la même URI . Cette instance porte toutes les métadonnées de cette relation."@fr ;
  rdfs:label "est en relation avec"@fr ;
  rdfs:subClassOf <https://rdafr.fr/Elements#C100013> ;
  owl:versionInfo "0.2.0"@fr ;
  sh:closed false ;
  sh:description "La classe ‘est en relation avec’ permet d’ajouter des assertions sur toutes les propriétés qui expriment une relation entre des instances de deux classes de l’ontologie (et qui, de fait, correspondent aux relations entre instances d’entités du code RDA-FR)."@fr ;
  sh:ignoredProperties [] ;
  sh:nodeKind sh:IRI ;


Michael DeBellis

unread,
Nov 19, 2025, 3:09:36 PMNov 19
to topbrai...@googlegroups.com
 I have read up on punning and from what I understand it is acceptable to pun Class and NamedIndividual IRIs OR Property and NamedIndividual IRIs, but punning a Class AND Property under the same IRI creates a logical flaw, especially when the definition becomes self-referencing like below. Is this understanding correct?

Yes, that is correct. Also, IMO that code is terrible. For one thing you can never make something both a class and a property. That puts you into "OWL Full" which doesn't sound that bad but it is. You can't use a reasoner on OWL Full so you may as well be using something other than OWL. 

And second, I've never seen a class that was also a SHACL NodeShape. I don't think it is illegal but IMO it is  terrible design. From that excerpt I would be very reluctant to use anything associated with that ontology. 

With puns you can make a class also be a NamedIndividual or an object or data property also be a NamedIndividual but that's it.You should never make something both a class and a property. BTW, Annotation Properties don't need puns because the reasoner doesn't see them so you can already assert values on them without puns. 

Michael

Reply all
Reply to author
Forward
0 new messages