uncefact / spec-untp

UN Transparency Protocol
https://uncefact.github.io/spec-untp/
GNU General Public License v3.0
18 stars 18 forks source link

Problems in untp-core ontology #125

Closed VladimirAlexiev closed 3 months ago

VladimirAlexiev commented 4 months ago

I got https://jargon.sh/user/unece/untp-core/v/working/artefacts/jsonld/render.jsonld, saved as untp-core-ontology.jsonld, and converted to turtle untp-core-ontology.ttl, eg

riot --formatted ttl untp-core-ontology.jsonld > untp-core-ontology.ttl 

Problems:

Props

Enumerations

Fak3 commented 4 months ago

@VladimirAlexiev

There's no reason to use different props for the name of things. So remove all these props, and just say:

schema:name schema:domainIncludes  untp-core:Facility, untp-core:Standard, untp-core:Product... untp-core:hashMethodCode .

I wonder if we should make all our classes inherit from schema:Thing instead of changing the domain of schema:name. Is there any potential downsides?

VladimirAlexiev commented 4 months ago

@Fak3 I dislike overly abstract classes like Thing and making such classes and deep class hierarchies just for the purpose of binding props to classes.

onthebreeze commented 4 months ago

So @VladimirAlexiev - I've been back and forth with specific names vs abstract names. I did have Facility.facilityName - then changed it to facility.name (inherited from identifier). Some ontologists like specific property names and some seem to like abstraction inheritance.

personally I think I prefer specifc names and identifiers - but I'm a bit fed up of swaying with the winds of opinion on this. Is there some external best practice reference that we can follow?

Fak3 commented 4 months ago

personally I think I prefer specifc names and identifiers - but I'm a bit fed up of swaying with the winds of opinion on this. Is there some external best practice reference that we can follow?

Yes, the relevant best practices on the web document recommends to reuse vocabularies: https://www.w3.org/TR/dwbp/#ReuseVocabularies

Fak3 commented 4 months ago

I did have Facility.facilityName - then changed it to facility.name (inherited from identifier).

Name should not inherit from identifier. Identifier is unique, name is not.

onthebreeze commented 4 months ago

Well of course vocabulary re-use is best practice.

But the question was about best practice vocabulary design - more abstract (thing.name) or more concrete (party.name)

VladimirAlexiev commented 4 months ago

@onthebreeze I don't know who do you trust (why not me? :-).

There's a lot of useful advice in that guide, eg see about Definitions