qudt / qudt-public-repo

QUDT -Quantities, Units, Dimensions and dataTypes - public repository
Other
114 stars 71 forks source link

SHACL shapes for contributions? #808

Closed fkleedorfer closed 6 months ago

fkleedorfer commented 10 months ago

We are preparing a contribution of units and quantitykinds required for the construction industry.

In order to do that, I've written a simple contribution tool based as a submodule of qudtlib. That tool generates conversion factors, labels, etc. for derived units. In order to make sure the contribution meets the requirements stated by QUDT, the tool uses SHACL shapes for the required information on Unit and QuantityKind. If you have suggestions for improving them, please let us know.

This is work in progress on a branch - here is the current version:

@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#> .
@prefix constant:     <http://qudt.org/vocab/constant/> .
@prefix dc:           <http://purl.org/dc/elements/1.1/> .
@prefix dcterms:      <http://purl.org/dc/terms/> .
@prefix mc:           <http://www.linkedmodel.org/owl/schema/core#> .
@prefix owl:          <http://www.w3.org/2002/07/owl#> .
@prefix prov:         <http://www.w3.org/ns/prov#> .
@prefix qkdv:         <http://qudt.org/vocab/dimensionvector/> .
@prefix quantitykind: <http://qudt.org/vocab/quantitykind/> .
@prefix qudt:         <http://qudt.org/schema/qudt/> .
@prefix skos:         <http://www.w3.org/2004/02/skos/core#> .
@prefix unit:         <http://qudt.org/vocab/unit/> .
@prefix vaem:         <http://www.linkedmodel.org/schema/vaem#> .
@prefix voag:         <http://voag.linkedmodel.org/schema/voag#> .

@prefix qls:          <https://w3.org/qudtlib/contribute#> .

qls:UnitForContributionShape
    a              sh:NodeShape ;
    sh:targetClass qudt:Unit ;
    sh:property    [ sh:path     rdfs:label ;
                     sh:datatype rdf:langString ;
                     sh:minCount 1 ;
                     sh:message  "rdfs:label is missing" ; ] ;
    sh:property    [ sh:path     qudt:conversionMultiplier ;
                     sh:datatype xsd:decimal ;
                     sh:minCount 1 ;
                     sh:maxCount 1 ;
                     sh:message  "qudt:conversionMultiplier is missing, duplicated, or not of datatype xsd:decimal" ; ] ;
    sh:property    [ sh:path     qudt:conversionOffset ;
                     sh:datatype xsd:decimal ;
                     sh:maxCount 1 ;
                     sh:message  "qudt:conversionOffset is duplicated or not of datatype xsd:decimal" ; ] ;
    sh:property    [ sh:path     qudt:hasDimensionVector ;
                     sh:nodeKind sh:IRI ;
                     sh:minCount 1 ;
                     sh:maxCount 1 ;
                     sh:message  "qudt:hasDimensionVector is missing or not an IRI" ; ] ;
    sh:property    [ sh:path     qudt:plainTextDescription ;
                     sh:datatype xsd:string ;
                     sh:minCount 1 ;
                     sh:maxCount 1 ;
                     sh:message  "qudt:plainTextDescription is missing or not of datatype xsd:string" ; ] ;
    sh:property    [ sh:path     qudt:hasQuantityKind ;
                     sh:nodeKind sh:IRI ;
                     sh:minCount 1 ;
                     sh:maxCount 1 ;
                     sh:message  "qudt:hasQuantityKind is missing or not an IRI" ; ] ;
    sh:property    [ sh:path     rdfs:isDefinedBy ;
                     sh:nodeKind sh:IRI ;
                     sh:minCount 1 ;
                     sh:maxCount 1 ;
                     sh:message  "qudt:isDefinedBy is missing or not an IRI" ; ] ;
    sh:property    [ sh:path     qudt:symbol ;
                     sh:datatype xsd:string ;
                     sh:minCount 1 ;
                     sh:maxCount 1 ;
                     sh:message  "qudt:symbol is missing or not of datatype xsd:string" ; ] .

qls:QuantityKindForContributionShape
    a              sh:NodeShape ;
    sh:targetClass qudt:QuantityKind ;
    sh:property    [ sh:path     rdfs:label ;
                     sh:datatype rdf:langString ;
                     sh:minCount 1 ;
                     sh:message  "rdfs:label is missing" ; ] ;
    sh:property    [ sh:path     qudt:hasDimensionVector ;
                     sh:nodeKind sh:IRI ;
                     sh:minCount 1 ;
                     sh:maxCount 1 ;
                     sh:message  "qudt:hasDimensionVector is missing or not an IRI" ; ] ;
    sh:property    [ sh:path     qudt:plainTextDescription ;
                     sh:datatype xsd:string ;
                     sh:minCount 1 ;
                     sh:maxCount 1 ;
                     sh:message  "qudt:plainTextDescription is missing or not of datatype xsd:string" ; ] ;
    sh:property    [ sh:path     rdfs:isDefinedBy ;
                     sh:nodeKind sh:IRI ;
                     sh:minCount 1 ;
                     sh:maxCount 1 ;
                     sh:message  "qudt:isDefinedBy is missing or not an IRI" ; ] .
fkleedorfer commented 6 months ago

no longer relevant