?

30 views
Skip to first unread message

Michel Böhms

unread,
Feb 26, 2026, 11:02:00 AMFeb 26
to TopBraid Suite Users
was it just:

 sh:in ex:ComfortClass
>>>
sh:class ex:ComfortClass 


???

David Price

unread,
Feb 26, 2026, 11:35:28 AMFeb 26
to 'Felix Sasaki' via TopBraid Suite Users
--
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/ef32814f-1186-484d-a884-fb1ca72d12fen%40googlegroups.com.

David Price, Semantic Solution Architect

Bohms, H.M. (Michel)

unread,
Feb 27, 2026, 4:25:17 AMFeb 27
to topbrai...@googlegroups.com

Hi David

 

Made some changes. Actually quite surprised that SHACL-level stays fine too now.

 

Report now as expected:

(just have to figure out how I can make the sh:targetClass more flex so that it works on all classes being themselves an instance of the meta-class (now I just refer to the class at hand directly which can become cumbersome with more specific and/or individuals…..)

 

On:

# baseURI: https://w3id.org/sml-example/rdfs/def

# imports: http://www.w3.org/ns/shacl

 

@prefix ex: <https://w3id.org/sml-example/def#> .

@prefix owl: <http://www.w3.org/2002/07/owl#> .

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

@prefix sh: <http://www.w3.org/ns/shacl#> .

@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

 

<https://w3id.org/sml-example/rdfs/def>

  a owl:Ontology ;

  owl:imports <http://www.w3.org/ns/shacl> ;

.

ex:House

  a rdfs:Class ;

.

ex:House_specific123

  a rdfs:Class ;

  a ex:House ;

  ex:comfortClass ex:B ;

  ex:numberOfRooms "4"^^xsd:positiveInteger ;

.

ex:House_specific-error

  a rdfs:Class ;

  a ex:House ;

  ex:comfortClass ex:B ;

.

ex:House_individual456

  a rdfs:Class ;

  a ex:House_specific123 ;

  ex:address "Groeneweg 135, 2691ML, s-Gravenzande, The Netherlands" ;

.

ex:House_individual-error

  a rdfs:Class ;

  a ex:House_specific123 ;

.

ex:House_occurrence789

  a ex:House_individual456 ;

  ex:time "2026-02-23T14:56:00"^^xsd:dateTime ;

  ex:valueInEuro "550000.0"^^xsd:float ;

.

ex:House_occurrence-error

  a ex:House_individual456 ;

  ex:time "2026-02-23T14:56:00"^^xsd:dateTime ;

  ex:valueInEuro "550000"^^xsd:integer ;

.

ex:ComfortClass

  a rdfs:Class ;

.

ex:A

  a ex:ComfortClass ;

.

ex:B

  a ex:ComfortClass ;

.

ex:C

  a ex:ComfortClass ;

.

ex:address

  a rdf:Property ;

  rdfs:range xsd:string ;

.

ex:comfortClass

  a rdf:Property ;

  rdfs:domain ex:House ;

  rdfs:range ex:ComfortClass ;

.

ex:numberOfRooms

  a rdf:Property ;

  rdfs:range xsd:positiveInteger ;

.

ex:time

  a rdf:Property ;

  rdfs:range xsd:dateTime ;

.

ex:valueInEuro

  a rdf:Property ;

  rdfs:range xsd:float ;

.

ex:HouseShape

  a sh:NodeShape ;

  sh:targetClass ex:House ;

  sh:property [

      sh:path ex:comfortClass ;

      sh:class ex:ComfortClass ;

      sh:maxCount 1 ;

      sh:message "error"@nl ;

      sh:minCount 1 ;

      sh:severity sh:Violation ;

    ] ;

  sh:property [

      sh:path ex:numberOfRooms ;

      sh:datatype xsd:positiveInteger ;

      sh:maxCount 1 ;

      sh:message "error"@nl ;

      sh:minCount 1 ;

      sh:severity sh:Violation ;

    ] ;

.

ex:House_specificShape

  a sh:NodeShape ;

  sh:targetClass ex:House_specific123 ;

  sh:property [

      sh:path ex:address ;

      sh:datatype xsd:string ;

      sh:maxCount 1 ;

      sh:message "error"@nl ;

      sh:minCount 1 ;

      sh:severity sh:Violation ;

    ] ;

.

ex:House_individualShape

  a sh:NodeShape ;

  sh:targetClass ex:House_individual456 ;

  sh:property [

      sh:path ex:time ;

      sh:datatype xsd:dateTime ;

      sh:maxCount 1 ;

      sh:message "error"@nl ;

      sh:minCount 1 ;

      sh:severity sh:Violation ;

    ] ;

  sh:property [

      sh:path ex:valueInEuro ;

      sh:datatype xsd:float ;

      sh:maxCount 1 ;

      sh:message "error"@nl ;

      sh:minCount 1 ;

      sh:severity sh:Violation ;

    ] ;

.

 

 

Dr.ir. H.M. Böhms (Michel)
Strategic advisor digitalisation
Mobility & Built Environment

Web:     LinkedIn
Mobile: +31630381220
E-mail: 
michel...@tno.nl

Location

 

 

This message may contain information that is not intended for you. If you are not the addressee or if this message was sent to you by mistake, you are requested to inform the sender and delete the message. TNO accepts no liability for the content of this e-mail, for the manner in which you use it and for damage of any kind resulting from the risks inherent to the electronic transmission of messages.

 

Bohms, H.M. (Michel)

unread,
Feb 27, 2026, 6:03:28 AMFeb 27
to topbrai...@googlegroups.com

Just FYI, works now perfectly also flex (involving generic resources, shapes work also directly fine without any inference needed….), without any extra partitioning:

 

 

I would say: RDFS+SHACL for DPP! (digital product passports)

(instead of thinking up complex own meta-models in CEN/CENELEC PTC24/TC442 WG12 and buildingSMART etc.)

Small set of minimal dpp resources, subsectors can define their own agreed abstracts (like House-abstract) and then use them in specifics/individuals/occurrences conceptually, in space resp. in time…

Next complexity challenge: adding “decomposition (hasPart)” consistently with the meta-levels….

# meta-levels: abstract, specific, individual, occurrence

 

dpp:Product_abstract

  a rdfs:Class ;

.

dpp:Product_specific

  a rdfs:Class ;

.

dpp:Product_individual

  a rdfs:Class ;

.

ex:House_abstract

  a rdfs:Class ;

  rdfs:subClassOf ex:Product-abstract ;

.

ex:House_specific-1

  a rdfs:Class ;

  a ex:House_abstract ;

  rdfs:subClassOf ex:Product-specific ;

  ex:comfortClass ex:B ;

  ex:numberOfRooms "4"^^xsd:positiveInteger ;

.

ex:House_specific-2

  a rdfs:Class ;

  a ex:House_abstract ;

  rdfs:subClassOf ex:Product-specific ;

  ex:comfortClass ex:C ;

.

ex:House_individual-1-1

  a rdfs:Class ;

  a ex:House_specific-1 ;

  rdfs:subClassOf ex:Product-individual ;

  dpp:address "Groeneweg 135, 2691ML, s-Gravenzande, The Netherlands" ;

.

ex:House_individual-1-2

  a rdfs:Class ;

  a ex:House_specific-1 ;

  rdfs:subClassOf ex:Product-individual ;

.

ex:House_occurrence-1-1-1

  a ex:House_individual-1-1 ;

  ex:time "2026-02-23T14:56:00"^^xsd:dateTime ;

  ex:valueInEuro "550000.0"^^xsd:float ;

.

ex:House_occurrence-1-1-2

  a ex:House_individual-1-1 ;

  ex:time "2026-02-23T14:56:00"^^xsd:dateTime ;

  ex:valueInEuro "550000"^^xsd:integer ;

.

ex:ComfortClass

  a rdfs:Class ;

.

ex:A

  a ex:ComfortClass ;

.

ex:B

  a ex:ComfortClass ;

.

ex:C

  a ex:ComfortClass ;

.

dpp:address

  a rdf:Property ;

  rdfs:range xsd:string ;

.

ex:comfortClass

  a rdf:Property ;

  rdfs:domain ex:House-abstract ;

  rdfs:range ex:ComfortClass ;

.

ex:numberOfRooms

  a rdf:Property ;

  rdfs:range xsd:positiveInteger ;

.

dpp:time

  a rdf:Property ;

  rdfs:range xsd:dateTime ;

.

ex:valueInEuro

  a rdf:Property ;

  rdfs:range xsd:float ;

.

ex:HouseShape

  a sh:NodeShape ;

  sh:targetClass ex:House_abstract ;

  sh:property [

      sh:path ex:comfortClass ;

      sh:class ex:ComfortClass ;

      sh:maxCount 1 ;

      sh:message "error"@nl ;

      sh:minCount 1 ;

      sh:severity sh:Violation ;

    ] ;

  sh:property [

      sh:path ex:numberOfRooms ;

      sh:datatype xsd:positiveInteger ;

      sh:maxCount 1 ;

      sh:message "error"@nl ;

      sh:minCount 1 ;

      sh:severity sh:Violation ;

    ] ;

.

ex:House_specificShape

  a sh:NodeShape ;

  sh:targetClass ex:Product-specific ;

  sh:property [

      sh:path dpp:address ;

      sh:datatype xsd:string ;

      sh:maxCount 1 ;

      sh:message "error"@nl ;

      sh:minCount 1 ;

      sh:severity sh:Violation ;

    ] ;

.

ex:House_individualShape

  a sh:NodeShape ;

  sh:targetClass ex:Product_individual ;

  sh:property [

      sh:path dpp:time ;

      sh:datatype xsd:dateTime ;

      sh:maxCount 1 ;

      sh:message "error"@nl ;

      sh:minCount 1 ;

      sh:severity sh:Violation ;

    ] ;

  sh:property [

      sh:path ex:valueInEuro ;

      sh:datatype xsd:float ;

      sh:maxCount 1 ;

      sh:message "error"@nl ;

      sh:minCount 1 ;

      sh:severity sh:Violation ;

    ] ;

.

 

 

Dr. ir. H.M. Böhms (Michel)
Strategic advisor digitalization
Mobility & Built Environment

T: 
M: +31630381220
E: michel...@tno.nl

Location

 

David Price

unread,
Feb 27, 2026, 6:50:33 AMFeb 27
to 'Felix Sasaki' via TopBraid Suite Users
Hi Michel,

Just for fun I loaded this into EDG into an Ontologies collection telling it to not do any cleanup … and EDG Problems & Suggestions panel reports the errors too.

Cheers,
David


On 27 Feb 2026, at 09:25, 'Bohms, H.M. (Michel)' via TopBraid Suite Users <topbrai...@googlegroups.com> wrote:

Hi David
 
Made some changes. Actually quite surprised that SHACL-level stays fine too now.
 
Report now as expected:
image001.png
 
image002.png
This message may contain information that is not intended for you. If you are not the addressee or if this message was sent to you by mistake, you are requested to inform the sender and delete the message. TNO accepts no liability for the content of this e-mail, for the manner in which you use it and for damage of any kind resulting from the risks inherent to the electronic transmission of messages. 
 
From: topbrai...@googlegroups.com <topbrai...@googlegroups.com> On Behalf Of David Price
Sent: donderdag 26 februari 2026 17:35
To: 'Felix Sasaki' via TopBraid Suite Users <topbrai...@googlegroups.com>
Subject: Re: [topbraid-users] ?
 
sh:in expects a list of things so probably just needs brackets
 
image003.png

Bohms, H.M. (Michel)

unread,
Feb 27, 2026, 7:19:01 AMFeb 27
to topbrai...@googlegroups.com

Thx!

 

The nice thing is that I can show that linked data can actually implement ideas we promote already for a long time in the construction industry/SE:

(note I myself prefer the term ‘abstract’ to ‘generic’…generic to be used for the taxonomy…not for highest meta-level).

 

This figure is from Wim Gielingh who addressed this issue already 40 years ago in ISO STEP-context 😊 (in his GARM-General AEC Reference Model). He also invented the “hamburger model” a combi of typical decomposition and alternative decompositions representing alternative technical solutions to functional units (also referred to as FUTS-decomposition).

 

The latter I incorporated already in the EU standard EN17632 SML-Semantic Modelling and Linking (via the mentioned constraints on hasPart) and distinction in FunctionalEntity and TechnicalEntity..

 

The challenge is now to add the meta-levels the right way as pattern. This dimension is really missing:

  • Missing in DPP discussions (people talk about “Product” without being concise what level; compare discussions about building passports and building logbooks)
  • Missing in current EN17632

 

Think we need decomposition defined at abstract (meronomy) for specific level, taken over by individual level and just used by occurrence level (assuming it is not dynamic ie changing in time).

 

Gr michel

 

 

Dr.ir. H.M. Böhms (Michel)
Strategic advisor digitalisation
Mobility & Built Environment

Web:     LinkedIn
Mobile: +31630381220
E-mail: 
michel...@tno.nl

Location

 

 

This message may contain information that is not intended for you. If you are not the addressee or if this message was sent to you by mistake, you are requested to inform the sender and delete the message. TNO accepts no liability for the content of this e-mail, for the manner in which you use it and for damage of any kind resulting from the risks inherent to the electronic transmission of messages.

 

From: topbrai...@googlegroups.com <topbrai...@googlegroups.com> On Behalf Of David Price
Sent: vrijdag 27 februari 2026 12:50
To: 'Felix Sasaki' via TopBraid Suite Users <topbrai...@googlegroups.com>
Subject: Re: [topbraid-users] ?

 

Hi Michel,

 

Just for fun I loaded this into EDG into an Ontologies collection telling it to not do any cleanup … and EDG Problems & Suggestions panel reports the errors too.

 

Cheers,

David

On 27 Feb 2026, at 09:25, 'Bohms, H.M. (Michel)' via TopBraid Suite Users <topbrai...@googlegroups.com> wrote:

 

Hi David

 

Made some changes. Actually quite surprised that SHACL-level stays fine too now.

 

Report now as expected:

Reply all
Reply to author
Forward
0 new messages