DatasetMetadata: express reused-term class linkage with schema:domainIncludes (fixes #92) - #99
Conversation
…Includes (fixes entsoe#92) The class<->attribute linkage of reused external terms (dcterms:, prov:, dcat:, adms:, rdf:) is expressed with the non-inferential schema:domainIncludes instead of rdfs:domain; CIM-owned terms (dcatcim:, Metadata-European:) keep rdfs:domain. This removes the ontology hijacking of rdfs:domain on external terms (it entails every title-bearing resource is a dcat:Dataset) while keeping the class<->attribute structure in the RDFS vocabulary rather than only in SHACL. Restores the class linkage lost in 489c5c5 for the 11 URI-typed Dataset attributes (8 dcterms: + prov:wasGeneratedBy via schema:domainIncludes; Metadata-European:processType/usedSettings via rdfs:domain), and applies the convention consistently to the string-typed reused terms too. cims:dataType and cims:multiplicity are unchanged (verified: no drift vs ncp-v2-4-1). The URI/literal classification was cross-checked against the owning vocabularies (DCMI Terms, PROV-O): all #URI attributes have class-valued ranges (RightsStatement, Frequency, Standard, LicenseDocument, Agent, Location, prov:Activity) and all literals match. README (# RDF schemas): adds an explicit statement of the RDFS <-> SHACL division of responsibility and the RDFS conventions (flat RDF/XML, no nested nodes; classes + attributes + simple constraints in RDFS; Simple SHACL derived from it; Complex/ Validation SHACL for the rest), with the owned/reused linkage rule and an NB-breaking flag.
|
@griddigit-ci @Sveino such fix needs to be done in UML->Ontology, right? I like domainIncludes for its lightness. But it can't express cardinality. Oh well... in the balance, i think that domainIncludes is useful. |
|
@VladimirAlexiev we are not really able to do this thing in UML due to tooling. So it seems that this RDFS is somehow crafted manually/semi manually |
| <rdf:Description rdf:about="http://www.w3.org/ns/dcat#inSeries"> | ||
| <cims:AssociationUsed>Yes</cims:AssociationUsed> | ||
| <rdfs:comment>A dataset series of which the dataset is part.</rdfs:comment> | ||
| <rdfs:domain rdf:resource="http://www.w3.org/ns/dcat#Dataset"/> |
There was a problem hiding this comment.
dcat: props can stay with domain not domainIncludes
Fixes #92 — implements the
schema:domainIncludesconvention discussed in that thread.What
In
NCP/RDFS/DatasetMetadata-AP-Voc-RDFS2020.rdf, the class↔attribute linkage of reused external terms (dcterms:,prov:,dcat:,adms:, RDF reification) is now expressed with the non-inferentialschema:domainIncludesinstead ofrdfs:domain; CIM-owned terms (dcatcim:,Metadata-European:) keeprdfs:domain.This:
rdfs:domainon external terms (it entails every title-bearing resource is adcat:Dataset), which @VladimirAlexiev correctly flagged;489c5c5for the 11 URI-typed Dataset attributes (8dcterms:+prov:wasGeneratedByviaschema:domainIncludes;Metadata-European:processType/usedSettingsviardfs:domain), and applies the convention consistently to the string-typed reused terms too.Verification
cims:dataTypeandcims:multiplicityare unchanged — no drift vsncp-v2-4-1.#URIattribute has a class-valued range (RightsStatement,Frequency,Standard,LicenseDocument,Agent,Location,prov:Activity) and all literals match. (Separately:dcterms:rights/dcterms:rightsHolderare modelled as#Stringhere although DCT ranges them as classes — pre-existing, unchanged, out of scope for this PR.)schema:domainIncludes(a union — the intended "used on either" — rather than the conjunction that multiplerdfs:domainimplies).Docs —⚠️ breaking for
rdfs:domain-driven tooling.github/README.md(§ RDF schemas) now states the RDFS ↔ SHACL division of responsibility and the RDFS conventions explicitly: flat RDF/XML (no nested nodes); RDFS holds classes + attributes + simple attribute-local constraints (datatype, multiplicity) + the owned/reused class linkage; Simple SHACL is a mechanical projection of the RDFS; Complex/Validation SHACL carries what RDFS cannot express. Tooling that derived attribute-to-class membership fromrdfs:domainmust now also readschema:domainIncludesfor external terms.@VladimirAlexiev — this implements the non-inferential-domain approach from #92; would appreciate your review.