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" ; ] .
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: