Hi David et al.

The use case at hand is pretty clear. And I think we also did our analysis…
The issues that arise have to do with unnecessary complexity en use of OWA 
where people really want/need CWA.
Furthermore we see people use modelling styles with RDFS/OWL (involving 
‘objectification’) where they want to put meta-data at properties and 
relationships introducing their own meta-concept like xxx:hasProperty, 
xxx:hasValue, … etc.

Triple stores explode because of this and people unfairly blame LD for this in 
favour of relational etc. They start using both (or more) and introduce 
multiple transformations (both syntax and semantics) being another big source 
of trouble.

So we decided to define a good compromise between modelling power and 
simplicity. Ie not throwing away the baby but trying to keep the baby simple.
We want to do this by:
- define a minimum language stack (as below) in CWA fashion
- define a simple modelling style making the optimal use of this stack (not use 
it for meta-modelling your own language)

It’s is clear that this way some things cannot be done (esp. in the 
meta-modelling area) but these things might be compromised to go one 
granularity level higher.

More specifically on inverses:
We see people enrich both ontologies and datasets with inverse structure/data 
for performance reasons (partly because of all the above…).
Maybe you have you views here…

Gr Michel




Dr. ir. H.M. (Michel) Böhms
Senior Data Scientist


T +31888663107
M +31630381220
E [email protected]<mailto:[email protected]>

Location<https://www.google.com/maps/place/TNO+-+Locatie+Delft+-+Stieltjesweg/@52.000788,4.3745183,17z/data=!3m1!4b1!4m5!3m4!1s0x47c5b58c52869997:0x56681566be3b8c88!8m2!3d52.000788!4d4.376707>



[cid:[email protected]]<http://www.tno.nl/>

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: [email protected] <[email protected]> On 
Behalf Of David Price
Sent: vrijdag 6 juli 2018 12:17
To: [email protected]
Subject: Re: [topbraid-users] SHACL usage




On 6 Jul 2018, at 02:41, Holger Knublauch 
<[email protected]<mailto:[email protected]>> wrote:



On 6/07/2018 4:41, Bohms, H.M. (Michel) wrote:
Thanks Richard, Irene, David & Holger for all your advice here!
For our modelling guide I now start with:

Serialisation: Turtle
CMO (advice on any more generic variants welcome)

  *   cmo:hasDirectPart
  *   cmo:isDirectPartOf
  *   ! currently using in here owl:inverseOf, guess I better use shacl here 
too (?)

My personal opinion is to avoid inverse properties and owl:inverseOf in 
particular. The problem is redundancy: you need two distinct triples for the 
same information. RDF triples can be walked both ways - from subject to object 
or from object to subject and languages like SPARQL make this easy. So there is 
no real reason to have two properties for both directions, and in fact they can 
make working with such data harder.

That’s strictly true for RDF and SPARQL. However, many user interfaces that 
support a UI-only search or mapping capability, only support handling a forward 
reference. That is why we have customers now that use OWL inverses extensively. 
Otherwise, it’s very hard for the end user to get from Instance1 to Instance2 
and also from Instance2 to Instance1 in the UI navigation. We have no idea if 
such a UI will be required in the user community, and that raises a meta-level 
concern for me as follows:

It’s not clear what the usage scenarios or use cases are, who the actual 
customers are, etc. Everyone has different perspectives on this topic (e.g. 
Holger prefers only SHACL and I prefer having every tool available in my 
modelling tool box) and so IMO trying to select precisely what subset of RDFS, 
OWL, and SHACL should be in a modelling guide is not a sensible thing to do via 
a forum like this with so little understanding of the actual problem.

If I’m a typical SemWeb/Linked Data modeler today, got involved in Michel's 
project and was told to throw away most of what I’ve ever used I’d really 
wonder how that guide was developed and upon what deep understanding of the 
problem it was based. Michel does not have a good response to that since there 
was no deep analysis done. Also - seems like this all may just be the result of 
a vast over-reaction to the limited set of problems wrt OWA, for which there 
are nice solutions available in a layer of SHACL, and Michel may be throwing 
away a lot of baby with the bath water.

Michel - IMO something like this should really be a more like a 3 day workshop 
with your ontologists and SMEs to understand what you need and *only then* 
provide such detailed advice.

Cheers,
David



In SHACL you could replace cmo:isDirectPartOf with

XY
    sh:property [
        sh:path [ sh:inversePath cmo:hasDirectPart ] ;
        sh:name "is direct part of" ;
        ...
    ]

and form generators and features like GraphQL would still understand what you 
mean, and would present information accordingly.



  *
CDT

  *   QuantityKinds as rdfs:Datatype from 
https://ci.mines-stetienne.fr/lindt/v2/custom_datatypes.html#mass
  *   Turtle: https://ci.mines-stetienne.fr/lindt/v2/custom_datatypes.ttl

  *   Units in WKT-string from http://unitsofmeasure.org/ucum.html
SHACL (full)
OWL

  *   owl:Ontology (@holger: guess this one is the only second owl construct 
needed)

Yeah, sometimes we use this to identify the graph itself, but it's technically 
not really necessary. No harm though.



  *
  *   owl:imports
  *   maybe owl:versionInfo (but proab. Not need when already in URI strategy…)
RDFS

  *   rdfs:Class
  *   rdfs:Datatype (@holger: I need this one for use of CDT quantityKinds)
  *   rdfs:subClassOf
  *   rdfs:label
  *   rdfs:comment
RDF

  *   rdf:Property
  *   rdf:type
XSD

  *   xsd:string
  *   xsd:float
  *   xsd:integer
  *   xsd:Boolean

Looks good (except xsd:boolean is lower-case and I typically use xsd:decimal 
over xsd:float because of unlimited precision that xsd:decimal offers).

Holger




  *

Comments still very welcome! Michel




Dr. ir. H.M. (Michel) Böhms
Senior Data Scientist



T +31888663107
M +31630381220
E [email protected]<mailto:[email protected]>

Location<https://www.google.com/maps/place/TNO+-+Locatie+Delft+-+Stieltjesweg/@52.000788,4.3745183,17z/data=%213m1%214b1%214m5%213m4%211s0x47c5b58c52869997:0x56681566be3b8c88%218m2%213d52.000788%214d4.376707>



[cid:[email protected]]<http://www.tno.nl/>

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: [email protected]<mailto:[email protected]> 
<[email protected]><mailto:[email protected]> On 
Behalf Of Holger Knublauch
Sent: donderdag 5 juli 2018 01:07
To: [email protected]<mailto:[email protected]>
Subject: Re: [topbraid-users] SHACL usage

In my own work, I no longer use anything from the OWL namespace except 
owl:imports. However, some people start they class hierarchies at owl:Thing 
basically to distinguish "domain" classes from "system" classes. But that's an 
arbitrary distinction and thus problematic too. owl:DatatypeProperty and 
owl:ObjectProperty are not really needed and don't add value except 
hypothetical backwards compatibility with tools that only understand OWL and 
not RDF.

Your list below on selected resources from RDF/S namespaces is what I use as 
well. rdfs:subClassOf is very important and is even used officially in the 
SHACL spec. rdfs:label and comment are well-established. I am typically not 
using rdfs:subPropertyOf because this takes us on a slippery slope of requiring 
inferences (walking the subclass hierarchy is simply unavoidable, while putting 
subproperties into a hierarchy is often over-used to categorize properties, and 
for that there are better alternatives). In general, SHACL has no notion of 
properties as stand-alone entities, i.e. you don't even need to define an 
rdf:type for the properties.

Holger


On 5/07/2018 7:22, Bohms, H.M. (Michel) wrote:
Hi Irene

Ok , but would there be any extra benefit (beyond just rdf:property) when not 
OWL-inferencing?

Ie why would I introduce only those from owl when cwa/shacl modelling?

(just playing devils advocate)

Thx michel






Dr. ir. H.M. (Michel) Böhms
Senior Data Scientist




T +31888663107
M +31630381220
E [email protected]<mailto:[email protected]>

Location<https://www.google.com/maps/place/TNO+-+Locatie+Delft+-+Stieltjesweg/@52.000788,4.3745183,17z/data=%213m1%214b1%214m5%213m4%211s0x47c5b58c52869997:0x56681566be3b8c88%218m2%213d52.000788%214d4.376707>



[cid:[email protected]]<http://www.tno.nl/>

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: [email protected]<mailto:[email protected]> 
<[email protected]><mailto:[email protected]> On 
Behalf Of Irene Polikoff
Sent: woensdag 4 juli 2018 18:10
To: [email protected]<mailto:[email protected]>
Subject: Re: [topbraid-users] SHACL usage

I do not see much harm in having owl:DatatypeProperty and owl:ObjectProperty. 
Most modeling languages differentiate between attributes and relationships.

Of course, with SHACL this is not really needed, but may be useful as an 
annotation.
Sent from my iPhone

On Jul 4, 2018, at 11:40 AM, Bohms, H.M. (Michel) 
<[email protected]<mailto:[email protected]>> wrote:
Hi David,

Some background (vcon/interlink – like).

We have a use case where data is exchanged between a client (infra asset 
manager) and a contractor say about a road section or bridge.
They have to use the same ontology in the middle but both parties might have 
more detailed restrictions to which they want to validate. So we have both data 
sharing and data validation.
(note there will be a n x m relationship between client & contractors).

We have to convince them linked data is feasible (beyond relational) so we have 
to keep things as simple as possible at least as CWA as possible. They are 
scary about OWA…

With the below I was investigating how simple I can go. Seems like in the 
middle (sharing):

RDFS
- rdfs:Class
- rdfs:Datatype
- rdfs:subClassOf
- rdfs:label / rdfs:comment
RDF
- rdf:Property
- rdf:Datatype
- rdf:type
XSD
- xsd:string
- xsd:float
- xsd:integer
- xsd:boolean


And on the sides (validation): full shacl.

In the middle we then define/agree things like Bridge, TrafficBarrier etc as 
rdfs classes and designLifeExpectancy as rdf properties (ie no complex 
‘objectfications). We only add in facilities for:
- decomposition (hasDirectpartOf), that can be constrained (CWA) on class 
level, and
- quantities & unit (CDT units) where quantities (better: quantityKinds) are 
modelled as datatypes and the units in WKT like “230 mm”

That’s seems a nice compromise between power and simplicty in this 
case….(especially the transformations that is format translators and semantics 
convertors to and from their native applications (typically relational) stay 
simple enough too… (round trip data client <> contractor involving 
syntax/semantics via some middle takes 8 transformations now…so in parallel we 
will promote sharing iso conversion…..).

Gr michel




Dr. ir. H.M. (Michel) Böhms
Senior Data Scientist





T +31888663107
M +31630381220
E [email protected]<mailto:[email protected]>

Location<https://www.google.com/maps/place/TNO+-+Locatie+Delft+-+Stieltjesweg/@52.000788,4.3745183,17z/data=%213m1%214b1%214m5%213m4%211s0x47c5b58c52869997:0x56681566be3b8c88%218m2%213d52.000788%214d4.376707>



<image001.gif><http://www.tno.nl/>

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: [email protected]<mailto:[email protected]> 
<[email protected]<mailto:[email protected]>> On 
Behalf Of David Price
Sent: woensdag 4 juli 2018 17:18
To: [email protected]<mailto:[email protected]>
Subject: Re: [topbraid-users] SHACL usage

Hi Michel

I would say you’ve not given enough background for a clear answer.

Background items like these could change the answer :

Are you sharing with others?  If so, what tools do they have?

Are you implementing an app? If not what or who is the customer?

Are you defining  something to be taken and extended by others?
Where is source of any data?  Does it have a data model? Is it a fixed or 
growing set of data, or does it not exist yet?
For example, if your data is fully specified wrt data type and type and is 
complete and a good existing app generates it and you are just harvesting it 
for linking, for example, then  OWA concerns are less important.

Just a few thoughts to consider.

Cheers,
David

On 4 Jul 2018, at 11:54, Bohms, H.M. (Michel) 
<[email protected]<mailto:[email protected]>> wrote:
Thx!

So, to be sure (100-harmless), I could use even a subset of RDFS (“RDFS-“) 
without domain & range for sharing the vocabulary.
Domain and range can come in at SHACL.

‘RDFS-‘ would then be simply:
- rdfs:Class
- rdfs:Property
- rdfs:Datatype
- rdfs:subClassOf
- rdfs:subPropertyOf
- meta-stuff like: rdfs:label / rdfs:comment /rdfs:seeAlso / rdfs:isDefinedBy





Dr. ir. H.M. (Michel) Böhms
Senior Data Scientist






T +31888663107
M +31630381220
E [email protected]<mailto:[email protected]>

Location<https://www.google.com/maps/place/TNO+-+Locatie+Delft+-+Stieltjesweg/@52.000788,4.3745183,17z/data=%213m1%214b1%214m5%213m4%211s0x47c5b58c52869997:0x56681566be3b8c88%218m2%213d52.000788%214d4.376707>



<image001.gif><http://www.tno.nl/>

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: [email protected]<mailto:[email protected]> 
<[email protected]<mailto:[email protected]>> On 
Behalf Of Richard Cyganiak
Sent: woensdag 4 juli 2018 12:14
To: [email protected]<mailto:[email protected]>
Subject: Re: [topbraid-users] SHACL usage

My subjective answer:

RDFS has OWA semantics, but RDFS has so little expressivity that it’s OW-ness 
doesn’t really become a problem. So I would consider the inclusion of RDFS 
definitions “mostly harmless”. Especially rdfs:subClassOf is fine. I find 
rdfs:domain and rdfs:range more problematic, but that’s not because of OWA per 
se, but because their semantics is not what most people expect.

Richard







On 4 Jul 2018, at 08:01, Bohms, H.M. (Michel) 
<[email protected]<mailto:[email protected]>> wrote:

In case the purpose of modelling is really ‘data validation’ would it be better 
to go for SHACL-only (ie CWA-only) or still combine SHACL with RDFS?
(like in http://spinrdf.org/shacl-and-owl.html). Would there be a downside of a 
SHACL-only approach. Like always having to specify properties in the context of 
a shape?

In case of validation AND data sharing would it still work or would it be 
better to use ‘RDFS + SHACL’ where the SHACL is separately used at say 2 
validation sides (importing the RDFS) and RDFS-only for the sharing spec?
But then introducing some potential OWA/inference in the middle (that doesn’t 
HAVE to be utilized). Or is all THAT inference harmless wrt OWA/CWA discussion 
(ie inferencing rdfs superclass instantiation).

Thx for your views here, Michel





Dr. ir. H.M. (Michel) Böhms
Senior Data Scientist







T +31888663107
M +31630381220
E [email protected]<mailto:[email protected]>

Location<https://www.google.com/maps/place/TNO+-+Locatie+Delft+-+Stieltjesweg/@52.000788,4.3745183,17z/data=%213m1%214b1%214m5%213m4%211s0x47c5b58c52869997:0x56681566be3b8c88%218m2%213d52.000788%214d4.376707>



<image001.gif><http://www.tno.nl/>

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.










--
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 
[email protected]<mailto:[email protected]>.
For more options, visit https://groups.google.com/d/optout.

--
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 
[email protected]<mailto:[email protected]>.
For more options, visit https://groups.google.com/d/optout.
--
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 
[email protected]<mailto:[email protected]>.
For more options, visit https://groups.google.com/d/optout.
--
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 
[email protected]<mailto:[email protected]>.
For more options, visit https://groups.google.com/d/optout.
--
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 
[email protected]<mailto:[email protected]>.
For more options, visit https://groups.google.com/d/optout.
--
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 
[email protected]<mailto:[email protected]>.
For more options, visit https://groups.google.com/d/optout.
--
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 
[email protected]<mailto:[email protected]>.
For more options, visit https://groups.google.com/d/optout.

--
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 
[email protected]<mailto:[email protected]>.
For more options, visit https://groups.google.com/d/optout.
--
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 
[email protected]<mailto:[email protected]>.
For more options, visit https://groups.google.com/d/optout.


--
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 
[email protected]<mailto:[email protected]>.
For more options, visit https://groups.google.com/d/optout.

--
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 
[email protected]<mailto:[email protected]>.
For more options, visit https://groups.google.com/d/optout.

-- 
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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to