@prefix af-r: <http://purl.allotrope.org/ontologies/result#> .
@prefix af-s: <http://purl.allotrope.org/shape/> .
@prefix dct: <http://purl.org/dc/terms/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix qb: <http://purl.org/linked-data/cube#> .
@prefix qudt: <http://qudt.org/schema/qudt#> .
@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 skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix unit: <http://qudt.org/vocab/unit#> .
@prefix unit-ext: <http://purl.allotrope.org/ontology/qudt-ext/unit#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

af-s:AFS_0000249 a sh:PropertyShape ;
    rdfs:isDefinedBy <http://purl.allotrope.org/shapes/adm/core/REC/2024/12/datacube-component.shapes> ;
    skos:prefLabel "measure of current in pA shape" ;
    sh:deactivated false ;
    sh:message "There MUST be exactly 1 defined measure of current in pA." ;
    sh:name "measure of current in pA shape" ;
    sh:path qb:component ;
    sh:qualifiedMaxCount 1 ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class qb:ComponentSpecification ;
            sh:message "Measure MUST be current in pico Ampere." ;
            sh:property [ sh:message "There MUST be exactly 1 measure with current in pico Ampere." ;
                    sh:path qb:measure ;
                    sh:qualifiedMaxCount 1 ;
                    sh:qualifiedMinCount 1 ;
                    sh:qualifiedValueShape [ sh:class qb:MeasureProperty ;
                            sh:message "Type MUST be measure with current in pico Ampere." ;
                            sh:property [ sh:hasValue af-r:AFR_0001856 ;
                                    sh:maxCount 1 ;
                                    sh:message "Measure MUST have exactly 1 concept of current." ;
                                    sh:minCount 1 ;
                                    sh:path qb:concept ],
                                [ sh:hasValue unit-ext:PicoAmpere ;
                                    sh:maxCount 1 ;
                                    sh:message "Measure MUST have exactly 1 unit of Picoampere." ;
                                    sh:minCount 1 ;
                                    sh:path qudt:unit ] ] ] ] ;
    sh:qualifiedValueShapesDisjoint true .

af-s:AFS_0000251 a sh:NodeShape ;
    rdfs:isDefinedBy <http://purl.allotrope.org/shapes/adm/chromatography/REC/2024/12/chromatography-datacube.shapes> ;
    skos:prefLabel "datacube shape acquisition time [sec] vs. arbitrary measure" ;
    sh:and ( af-s:AFS_0000001 ) ;
    sh:class qb:DataSet ;
    sh:deactivated false ;
    sh:message "A well-formed Allotrope time-based datacube node MUST have a defined datacube structure of acquisition time [sec] vs. arbitrary measure" ;
    sh:property [ sh:maxCount 1 ;
            sh:message "Dataset MUST have exactly 1 structure." ;
            sh:minCount 1 ;
            sh:node [ sh:class qb:DataStructureDefinition ;
                    sh:message "Type MUST be data structure definition AND exactly 1 dimension AND 1 measure MUST be defined." ;
                    sh:property af-s:AFS_0000248,
                        af-s:AFS_0000252 ] ;
            sh:path qb:structure ] .

af-s:AFS_0000454 a sh:PropertyShape ;
    rdfs:isDefinedBy <http://purl.allotrope.org/shapes/adm/core/REC/2024/12/datacube-component.shapes> ;
    skos:prefLabel "measure of absorbance in AU shape" ;
    sh:deactivated false ;
    sh:message "There MUST be exactly 1 defined measure of absorbance in Milli absorbance unit [mAU]." ;
    sh:name "measure of absorbance in AU shape" ;
    sh:path qb:component ;
    sh:qualifiedMaxCount 1 ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class qb:ComponentSpecification ;
            sh:message "Measure MUST be absorbance in Milli absorbance unit." ;
            sh:property [ sh:message "There MUST be exactly 1 measure with absorbance in mAU." ;
                    sh:path qb:measure ;
                    sh:qualifiedMaxCount 1 ;
                    sh:qualifiedMinCount 1 ;
                    sh:qualifiedValueShape [ sh:class qb:MeasureProperty ;
                            sh:message "Type MUST be measure with absorbance in mAU." ;
                            sh:property [ sh:hasValue af-r:AFR_0001157 ;
                                    sh:maxCount 1 ;
                                    sh:message "Measure MUST have exactly 1 concept of absorbance." ;
                                    sh:minCount 1 ;
                                    sh:path qb:concept ],
                                [ sh:hasValue unit-ext:MilliAbsorbanceUnit ;
                                    sh:maxCount 1 ;
                                    sh:message "Measure MUST have exactly 1 unit of mAU." ;
                                    sh:minCount 1 ;
                                    sh:path qudt:unit ] ] ] ] ;
    sh:qualifiedValueShapesDisjoint true .

af-s:AFS_0000457 a sh:PropertyShape ;
    rdfs:isDefinedBy <http://purl.allotrope.org/shapes/adm/core/REC/2024/12/datacube-component.shapes> ;
    skos:prefLabel "dimension of acquisition time in time unit" ;
    sh:deactivated false ;
    sh:message "There MUST be exactly 1 defined dimension of acquisition time in time unit." ;
    sh:name "dimension of acquisition time in time unit" ;
    sh:path qb:component ;
    sh:qualifiedMaxCount 1 ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class qb:ComponentSpecification ;
            sh:message "Dimension MUST be acquisition time in time unit." ;
            sh:property [ sh:maxCount 1 ;
                    sh:message "There MUST be exactly 1 dimension with acquisition time in time unit." ;
                    sh:minCount 1 ;
                    sh:node [ sh:class qb:DimensionProperty ;
                            sh:message "Type MUST be dimension with acquisition time in time unit." ;
                            sh:property [ sh:hasValue af-r:AFR_0001158 ;
                                    sh:maxCount 1 ;
                                    sh:message "Dimension MUST have exactly 1 concept of acquisition time." ;
                                    sh:minCount 1 ;
                                    sh:path qb:concept ],
                                [ sh:class qudt:TimeUnit ;
                                    sh:maxCount 1 ;
                                    sh:message "Dimension MUST have exactly 1 time unit." ;
                                    sh:minCount 1 ;
                                    sh:path qudt:unit ] ] ;
                    sh:path qb:dimension ] ] ;
    sh:qualifiedValueShapesDisjoint true .

af-s:AFS_0000458 a sh:PropertyShape ;
    rdfs:isDefinedBy <http://purl.allotrope.org/shapes/adm/core/REC/2024/12/datacube-component.shapes> ;
    skos:prefLabel "dimensions of wavelength in Nanometer" ;
    sh:deactivated false ;
    sh:message "There MUST be exactly 1 defined dimension of wavelength in Nanometer." ;
    sh:name "dimension of wavelength in Nanometer" ;
    sh:path qb:component ;
    sh:qualifiedMaxCount 1 ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class qb:ComponentSpecification ;
            sh:message "Dimension MUST be wavelength in Nanometer." ;
            sh:property [ sh:maxCount 1 ;
                    sh:message "There MUST be exactly 1 dimension with wavelength in Nanometer." ;
                    sh:minCount 1 ;
                    sh:node [ sh:class qb:DimensionProperty ;
                            sh:message "Type MUST be dimension with wavelength in Nanometer." ;
                            sh:property [ sh:hasValue af-r:AFR_0001159 ;
                                    sh:maxCount 1 ;
                                    sh:message "Dimension MUST have exactly 1 concept of wavelength." ;
                                    sh:minCount 1 ;
                                    sh:path qb:concept ],
                                [ sh:hasValue unit-ext:Nanometer ;
                                    sh:maxCount 1 ;
                                    sh:message "Dimension MUST have exactly 1 unit of Nanometer." ;
                                    sh:minCount 1 ;
                                    sh:path qudt:unit ] ] ;
                    sh:path qb:dimension ] ] ;
    sh:qualifiedValueShapesDisjoint true .

af-s:AFS_0000493 a sh:PropertyShape ;
    rdfs:isDefinedBy <http://purl.allotrope.org/shapes/adm/core/REC/2024/12/datacube-component.shapes> ;
    skos:prefLabel "dimensions of mass per charge in m/z" ;
    sh:deactivated false ;
    sh:message "There MUST be exactly 1 defined dimension of mass per charge in m/z." ;
    sh:name "dimension of mass per charge in m/z" ;
    sh:path qb:component ;
    sh:qualifiedMaxCount 1 ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class qb:ComponentSpecification ;
            sh:message "Dimension MUST be mass per charge in m/z" ;
            sh:property [ sh:maxCount 1 ;
                    sh:message "There MUST be exactly 1 dimension with mass per charge in m/z" ;
                    sh:minCount 1 ;
                    sh:node [ sh:class qb:DimensionProperty ;
                            sh:message "Type MUST be dimension with mass per charge in m/z" ;
                            sh:property [ sh:hasValue af-r:AFR_0001868 ;
                                    sh:maxCount 1 ;
                                    sh:message "Dimension MUST have exactly 1 concept of mass per charge." ;
                                    sh:minCount 1 ;
                                    sh:path qb:concept ],
                                [ sh:hasValue unit-ext:MassPerCharge ;
                                    sh:maxCount 1 ;
                                    sh:message "Dimension MUST have exactly 1 unit of m/z." ;
                                    sh:minCount 1 ;
                                    sh:path qudt:unit ] ] ;
                    sh:path qb:dimension ] ] ;
    sh:qualifiedValueShapesDisjoint true .

af-s:AFS_0000494 a sh:PropertyShape ;
    rdfs:isDefinedBy <http://purl.allotrope.org/shapes/adm/core/REC/2024/12/datacube-component.shapes> ;
    skos:prefLabel "measure of counts with uunit-ext:Unitless" ;
    sh:deactivated false ;
    sh:message "There MUST be exactly 1 defined measure of counts with unit-ext:Unitless" ;
    sh:name "measure of counts with unit-ext:Unitless" ;
    sh:path qb:component ;
    sh:qualifiedMaxCount 1 ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class qb:ComponentSpecification ;
            sh:message "Measure MUST be counts with unit-ext:Unitless" ;
            sh:property [ sh:message "There MUST be exactly 1 measure with counts with unit-ext:Unitless" ;
                    sh:path qb:measure ;
                    sh:qualifiedMaxCount 1 ;
                    sh:qualifiedMinCount 1 ;
                    sh:qualifiedValueShape [ sh:class qb:MeasureProperty ;
                            sh:message "Type MUST be measure with counts with unit-ext:Unitless" ;
                            sh:property [ sh:hasValue af-r:AFR_0000984 ;
                                    sh:maxCount 1 ;
                                    sh:message "Measure MUST have exactly 1 concept of count." ;
                                    sh:minCount 1 ;
                                    sh:path qb:concept ],
                                [ sh:hasValue unit-ext:Unitless ;
                                    sh:maxCount 1 ;
                                    sh:message "Measure MUST have exactly 1 unitless unit." ;
                                    sh:minCount 1 ;
                                    sh:path qudt:unit ] ] ] ] ;
    sh:qualifiedValueShapesDisjoint true .

af-s:AFS_0005661 a sh:PropertyShape ;
    rdfs:isDefinedBy <http://purl.allotrope.org/shapes/adm/core/REC/2024/12/datacube-component.shapes> ;
    skos:prefLabel "absolute intensity unitless measure" ;
    sh:deactivated false ;
    sh:message "There MUST be exactly 1 measure with concept and unit." ;
    sh:name "absolute intensity unitless measure" ;
    sh:path qb:component ;
    sh:qualifiedMaxCount 1 ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class qb:ComponentSpecification ;
            sh:message "Measure MUST have concept and unit." ;
            sh:property [ sh:message "There MUST be exactly 1 measure with concept and unit." ;
                    sh:path qb:measure ;
                    sh:qualifiedMaxCount 1 ;
                    sh:qualifiedMinCount 1 ;
                    sh:qualifiedValueShape [ sh:class qb:MeasureProperty ;
                            sh:message "Type MUST be measure with unit." ;
                            sh:property [ sh:hasValue af-r:AFR_0002538 ;
                                    sh:maxCount 1 ;
                                    sh:message "Measure MUST have exactly 1 concept of type absolute intensity." ;
                                    sh:minCount 1 ;
                                    sh:path qb:concept ],
                                [ sh:hasValue unit-ext:Unitless ;
                                    sh:maxCount 1 ;
                                    sh:message "Measure MUST have exactly 1 unit." ;
                                    sh:minCount 1 ;
                                    sh:path qudt:unit ] ] ] ] ;
    sh:qualifiedValueShapesDisjoint true .

af-s:AFS_0005887 a sh:PropertyShape ;
    rdfs:isDefinedBy <http://purl.allotrope.org/shapes/adm/core/REC/2024/12/datacube-component.shapes> ;
    skos:prefLabel "dimension of acquisition volume in volume unit" ;
    sh:deactivated false ;
    sh:message "There MUST be exactly 1 defined dimension of acquisition volume in volume unit." ;
    sh:name "dimension of acquisition volume in volume unit" ;
    sh:path qb:component ;
    sh:qualifiedMaxCount 1 ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class qb:ComponentSpecification ;
            sh:message "Dimension MUST be acquisition volume in volume unit." ;
            sh:property [ sh:maxCount 1 ;
                    sh:message "There MUST be exactly 1 dimension with acquisition volume in volume unit." ;
                    sh:minCount 1 ;
                    sh:node [ sh:class qb:DimensionProperty ;
                            sh:message "Type MUST be dimension with acquisition volume in volume unit." ;
                            sh:property [ sh:hasValue af-r:AFR_0002522 ;
                                    sh:maxCount 1 ;
                                    sh:message "Dimension MUST have exactly 1 concept of acquisition volume." ;
                                    sh:minCount 1 ;
                                    sh:path qb:concept ],
                                [ sh:class qudt:VolumeUnit ;
                                    sh:maxCount 1 ;
                                    sh:message "Dimension MUST have exactly 1 volume unit." ;
                                    sh:minCount 1 ;
                                    sh:path qudt:unit ] ] ;
                    sh:path qb:dimension ] ] ;
    sh:qualifiedValueShapesDisjoint true .

af-s:AFS_0000248 a sh:PropertyShape ;
    rdfs:isDefinedBy <http://purl.allotrope.org/shapes/adm/core/REC/2024/12/datacube-component.shapes> ;
    skos:prefLabel "dimension of acquisition time in seconds shape" ;
    sh:deactivated false ;
    sh:message "There MUST be exactly 1 defined dimension of acquisition time in seconds." ;
    sh:name "dimension of acquisition time in seconds shape" ;
    sh:path qb:component ;
    sh:qualifiedMaxCount 1 ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class qb:ComponentSpecification ;
            sh:message "Dimension MUST be acquisition time in seconds." ;
            sh:property [ sh:maxCount 1 ;
                    sh:message "There MUST be exactly 1 dimension with acquisition time in seconds." ;
                    sh:minCount 1 ;
                    sh:node [ sh:class qb:DimensionProperty ;
                            sh:message "Type MUST be dimension with acquisition time in seconds." ;
                            sh:property [ sh:hasValue af-r:AFR_0001158 ;
                                    sh:maxCount 1 ;
                                    sh:message "Dimension MUST have exactly 1 concept of acquisition time." ;
                                    sh:minCount 1 ;
                                    sh:path qb:concept ],
                                [ sh:hasValue unit:SecondTime ;
                                    sh:maxCount 1 ;
                                    sh:message "Dimension MUST have exactly 1 unit of seconds." ;
                                    sh:minCount 1 ;
                                    sh:path qudt:unit ] ] ;
                    sh:path qb:dimension ] ] ;
    sh:qualifiedValueShapesDisjoint true .

af-s:AFS_0000252 a sh:PropertyShape ;
    rdfs:isDefinedBy <http://purl.allotrope.org/shapes/adm/core/REC/2024/12/datacube-component.shapes> ;
    skos:prefLabel "arbitrary measure" ;
    sh:deactivated false ;
    sh:message "There MUST be exactly 1 measure with concept and unit." ;
    sh:name "arbitrary measure" ;
    sh:path qb:component ;
    sh:qualifiedMaxCount 1 ;
    sh:qualifiedMinCount 1 ;
    sh:qualifiedValueShape [ sh:class qb:ComponentSpecification ;
            sh:message "Measure MUST have concept and unit." ;
            sh:property [ sh:maxCount 1 ;
                    sh:message "There MUST be exactly 1 measure with concept and unit." ;
                    sh:minCount 1 ;
                    sh:node [ sh:class qb:MeasureProperty ;
                            sh:message "Type MUST be measure with unit." ;
                            sh:property [ sh:maxCount 1 ;
                                    sh:message "Measure MUST have exactly 1 concept." ;
                                    sh:minCount 1 ;
                                    sh:path qb:concept ],
                                [ sh:class qudt:Unit ;
                                    sh:maxCount 1 ;
                                    sh:message "Measure MUST have exactly 1 unit." ;
                                    sh:minCount 1 ;
                                    sh:path qudt:unit ] ] ;
                    sh:path qb:measure ] ] ;
    sh:qualifiedValueShapesDisjoint true .

<http://purl.allotrope.org/shapes/adm/core/REC/2024/12/datacube-component.shapes> a owl:Ontology ;
    dct:license <http://purl.allotrope.org/voc/creative-commons-attribution-license> ;
    dct:publisher <http://www.allotrope.org> ;
    dct:rights <http://purl.allotrope.org/voc/attribution>,
        <http://purl.allotrope.org/voc/copyright> ;
    dct:title "Allotrope Core Shape Library - Datacube Component Shapes (REC/2024/12)" ;
    owl:imports <http://purl.allotrope.org/shapes/adm/core/REC/2022/06/identifier.shapes>,
        <http://purl.allotrope.org/shapes/adm/core/REC/2022/06/indexed-datum.shapes>,
        <http://purl.allotrope.org/shapes/adm/core/REC/2022/06/material.shapes>,
        <http://purl.allotrope.org/shapes/adm/core/REC/2022/06/process.shapes> ;
    owl:priorVersion <http://purl.allotrope.org/shapes/adm/core/REC/2022/06/datacube-component.shapes> ;
    owl:versionIRI <http://purl.allotrope.org/shapes/adm/core/REC/2024/12/datacube-component.shapes> ;
    owl:versionInfo "REC/2024/12" ;
    skos:prefLabel "datacube component shapes (adm::core)" .

