Closed pvdbosch closed 2 years ago
I prefer to suffix the name by "Id" or "Code" or "Number" or "Name" to avoid confusing:
@MarcBruyland will examine difference property/concept/conceptScheme
I'll propose REST design group to use suffix (e.g. change to GenderCode)
Anomalies detected in our vocabulary document:
ConceptSchemes without corresponding Concept: Id | Name | Ontology 701 | CountryNisCode | Location 364 | Nace2008 | Organization 363 | Descent | Person
Data elements with Type Property instead of Concept: Id | Name | Ontology 269 | addressStatus | Location 300 | positionGeometryMethod | Location 301 | positionSpecification | Location 666 | streetNameStatus | Location 667 | streetNameType | Location 310 | territory | Location 243 | authorization | Organization 230 | endReason | Organization 235 | function | Organization 237 | legalForm | Organization 239 | legalStatus | Organization 242 | organizationType | Organization 682 | quality | Organization 683 | administrativeStatus | Person 329 | civilState | Person 335 | gender | Person 338 | householdRelationType | Person 347 | register | Person
CountryNisCode is an alternative for CountryIsoCode, so should be linked to same Concepts I guess.
rename to GenderCode OK for REST design WG. Updated this in https://github.com/belgif/openapi-person/commit/915a802f9375148047a01c8df3d8226fb5270012
ConceptScheme in fedvoc should then be renamed as well.
@MarcBruyland ne faut-il pas aussi adapter le concept "Gender" en "GenderCode" ?
@MarcBruyland pourrais-tu harmoniser les labels et/ou définitions entre Concept et ConceptScheme ? exmples: countryNisCode, genderCode, positionGeometryMethod, positionSpecification, function, legalStatus, administrativeStatus, register
@MarcBruyland dans streetNameType, tu parles de "see code list" mais tu n'as pas mis l'hyperlink
@MarcBruyland pour les concepts territory, civilState il faut ajouter les concepSchemes Territory, CivilState
@MarcBruyland id366, supprimer les commentaires
I wonder why we deviate from some other sources, by having all our coding lists (ConceptScheme) also defined as a "Concept" . Should we rather define them as "property" to link them to a Class, than as Concept?
E.g. VL has geslacht (property) which can be defined on a Persoon and has a range of Geslacht (ConceptScheme) while FED has gender (Concept) linked to Person and has range of GenderCode
Some rules for skos:
what do we have in fedvoc today ? This expresses that gender is a property of Person, its range is a concept and the related conceptscheme is GenderCode. Probably we should replace 'valueInScheme' by 'inScheme'.
gender -> domain-> Person gender -> range -> _Concept gender -> inScheme-> GenderCode
In sheet Vocabulary, we now have in column Type: Class, Property, ConceptScheme, Concept gender -> Property iso Concept (strictly speaking gender has a type Property and a range Concept)
The way to find out that the value of gender is a code in a Concept, is then to go to sheet Datamodels and look for the predicate range.
@MarcBruyland ,
I agree with make gender a Property, but I think following would be more conform with use of skos in other vocabularies:
0 (unknown) type Concept 1 (male) type Concept 2 (female) type Concept
GenderCode type ConceptScheme 0 inScheme GenderCode 1 inScheme GenderCode 2 inScheme GenderCode
gender type Property gender domain Person gender range GenderCode
https://www.w3.org/TR/rdf-schema/#ch_range says: The triple P rdfs:range C states that P is an instance of the class rdf:Property, that C is an instance of the class rdfs:Class and that the resources denoted by the objects of triples whose predicate is P are instances of the class C.
If we say "gender range GenderCode", we say that gender is an instance of a ConceptScheme, while in fact it is an instance of a Concept (the value is one of the concepts of the conceptscheme, not the entire conceptscheme).
Or just use the Core Person existing http://publications.europa.eu/resource/authority/human-sex ...
fedv:gender rdfs:domain fedv:Person fedv:gender rdfs:range skos:Concept
fedv:GenderCodes a skos:ConceptScheme fedv:male a skos:Concept fedv:male skos:inScheme fedv:GenderCodes
Then use SHACL to check if the class the gender property points to belongs to the GenderCodes conceptscheme (but I assume that is meant by the Excel notation listed above)
We are currently recommending the ISO-5218 codes. I hadn't seen the EU "human sex" concept scheme yet, but I wonder if it is commonly used; haven't seen it in exchanges yet (even European ones), and its descriptions limit it to the social sciences domain:
https://publications.europa.eu/resource/authority/human-sex/FEMALE
The concept FEMALE is used for representing the human sexes in the context of interchange of information in the social sciences domain.
It's also not referenced in the Person Core vocabularies Word doc (https://joinup.ec.europa.eu/collection/semantic-interoperability-community-semic/solution/core-person-vocabulary/release/100 )
@MarcBruyland , @barthanssens , OK I understand now that both "inScheme" and "range" aren't a good fit. It still seems useful to indicate in the Excel which ConceptSchemes are compatible with a specific property. Would that be doable with SHACL (I don't know it very well), or is SHACL always for a specific message or API?
Alternatively, we might define our own relation; like Marc had originally:
IMHO while the the notation in Excel is useful for business, it can be a bit confusing for techies like me :-)
SHACL can definitely be used to validate if a Concept (term) is in a specific ConceptScheme, e.g. the EU Data Portal uses DCAT-AP SHACL rules to validate if the categories are part of a controlled list of "allowed" themes.
SHACL isn't tied to any API, and also not tied to the vocabulary/ontologies being validated: it can be used to validate any set of statements ("dataset" or "message"), and it is possible to use different SHACL rules on the same set of statements (e.g. different applications may have different rules).
Since skos:Concepts are just classes in RDF, and RDF allow instances to have multiple classes, one could also create custom classes and mix them
fedv:gender rdfs:domain fedv:Person fedv:gender rdfs:range skos:Concept
fedv:Gender a rdfs:Class
fedv:GenderCodeScheme a skos:ConceptScheme fedv:male a skos:Concept fedv:male skos:inScheme fedv:GenderCodeScheme fedv:male a fedv:Gender;
Whether that's worth the extra work is debatable... It may have some benefit when applying logic reasoning (OWL), but probably not in our applications...
Proposal
AS-IS in fedvoc: gender type Concept GenderCode type ConceptScheme datamodel: gender domain Person gender range Concept gender valueInScheme GenderCode
TO-BE in fedvoc: gender type Property rest stays the same
List of data elements with type Concept in fedvoc (standard part): currency addressStatus countryIsoAlpha3Code countryIsoCode countryIsoNum3Code countryNisCode countryWithHistoryIsoCode positionGeometryMethod positionSpecification regionCode streetNameStatus streetNameType endReason function legalForm legalStatus nace2008 organizationType civilState gender householdRelationType
Question do we rename these data elements by systematically adding a suffix Code ?
ex.
In vocabularies excel and in Swagger.
Impact on: