@prefix ADMS: <http://www.w3.org/ns/adms#> .
@prefix dash: <http://datashapes.org/dash#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix dldemoed: <https://concepts.datalad.org/s/demo-empirical-data/unreleased/> .
@prefix dlflat: <https://concepts.datalad.org/s/flat/unreleased/> .
@prefix dlidentifiers: <https://concepts.datalad.org/s/identifiers/unreleased/> .
@prefix dlschemas: <https://concepts.datalad.org/s/> .
@prefix dlthings: <https://concepts.datalad.org/s/things/v1/> .
@prefix dltypes: <https://concepts.datalad.org/s/types/v1/> .
@prefix eunal: <http://publications.europa.eu/resource/authority/> .
@prefix linkml: <https://w3id.org/linkml/> .
@prefix orcid: <https://orcid.org/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix prov: <http://www.w3.org/ns/prov#> .
@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 sio: <http://semanticscience.org/resource/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix spdx: <http://spdx.org/rdf/terms#> .
@prefix w3ctr: <https://www.w3.org/TR/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .


dlflat:FlatThing a sh:NodeShape ;
    rdfs:label "Thing" ;
    rdfs:comment """`Thing` variant that provides a basis for the annotation and curation of more specialized concepts.
It equips `Thing` with additional slots to annotate labels and notes that aid information entry and curation in workflows and user interfaces. Moreover, the `identifiers` slot enables the specification is any number of identifiers (issued or computed) associated with a `Thing`.""" ;
    sh:closed true ;
    sh:ignoredProperties ( dldemoed:subject_type dldemoed:factors dldemoed:distribution_of dldemoed:subjects dldemoed:media_type rdf:type dldemoed:checksums rdf:value dldemoed:honorific_name_prefix dldemoed:emails dldemoed:honorific_name_suffix dldemoed:unit dldemoed:instruments dldemoed:orcid dldemoed:derived_from dldemoed:generated_by dldemoed:family_name dldemoed:member_of dldemoed:part_of dldemoed:implements dldemoed:additional_names dldemoed:format dldemoed:dimensions dldemoed:short_name dldemoed:byte_size dldemoed:organization_type dldemoed:study dldemoed:name dldemoed:factor_level_of dldemoed:parent_organization dldemoed:leaders dldemoed:given_name ) ;
    sh:property [ sh:datatype xsd:anyURI ;
            sh:description "Persistent and globally unique identifier of a `Thing`." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:name "Persistent identifier" ;
            sh:nodeKind sh:Literal ;
            sh:order 1 ;
            sh:path dlthings:pid ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A comment about a metadata record either providing additional information for a record curation, or leaving a comment after curation occurred. This can be used to include information that is deemed relevant, but could not be expressed in the provided fields." ;
            sh:name "Editorial note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:editorialNote ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ;
            sh:name "Exact mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 7 ;
            sh:path skos:exactMatch ],
        [ sh:class dlidentifiers:Identifier ;
            sh:description "An unambiguous reference to the subject within a given context." ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:path dlidentifiers:identifier ],
        [ sh:class dlflat:FlatAttributeSpecification ;
            sh:description "Declares a relation that associates a `Thing` (or another attribute) with an attribute, where an attribute is an intrinsic characteristic, such as a quality, capability, disposition, function, or is an externally derived attribute determined from some descriptor (e.g. a quantity, position, label/identifier). Technically, this declaration is done via an `AttributeSpecification` that combines a `predicate` with a value declaration and the attribute-related slots of a `Thing`. Importantly, such attributes are declared inline, because they do not have a unique identifier. If an identifier is available, a `Thing` declaration (see `relation`), and a qualification of that relationship via a `Statement` (see `characterized_by`) should be preferred." ;
            sh:name "Attributes" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 3 ;
            sh:path dlthings:attributes ],
        [ sh:class dlflat:FlatStatement ;
            sh:description "Qualifies relationships between a subject `Thing` and an object `Thing` with a `Statement` declaring a `predicate` on the nature of the relationship." ;
            sh:name "Is characterized by" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 2 ;
            sh:path dlthings:characterized_by ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "Note that can be shown when the record is displayed as an item. This is typically longer than a label." ;
            sh:maxCount 1 ;
            sh:name "Record display note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:note ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have related meaning." ;
            sh:name "Related mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 11 ;
            sh:path skos:relatedMatch ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A free-text account of the subject." ;
            sh:maxCount 1 ;
            sh:name "Description" ;
            sh:nodeKind sh:Literal ;
            sh:order 4 ;
            sh:path dlthings:description ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ;
            sh:name "Broad mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 9 ;
            sh:path skos:broadMatch ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ;
            sh:name "Narrow mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 10 ;
            sh:path skos:narrowMatch ],
        [ sh:datatype rdfs:Resource ;
            sh:description "State that the subject is an instance of a particular schema class. Typically, no explicit value needs to be assigned to this slot, because it matches the class type of a particular record. However, this slots can be used as a type designator of a schema element for validation and schema structure handling purposes. This is used to indicate specialized schema classes for properties that accept a hierarchy of classes as their range." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdf:type ],
        [ sh:class dlthings:Thing ;
            sh:description "Declares an unqualified relation of the subject `Thing` to another `Thing`. This schema slot is used to define related things inline. If such a definition is not needed. A qualified relationship can be declared directly using the `characterized_by` slot." ;
            sh:name "Relations" ;
            sh:nodeKind sh:IRI ;
            sh:order 6 ;
            sh:path dlthings:relation ],
        [ sh:class dlflat:FlatAnnotation ;
            sh:description "A record of properties of the metadata record on a subject, a collection of tag/text tuples with the semantics of OWL Annotation." ;
            sh:name "Annotations" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 5 ;
            sh:path dlthings:annotations ],
        [ sh:datatype xsd:string ;
            sh:description "Label that can be shown when the metadata record is displayed as an item." ;
            sh:maxCount 1 ;
            sh:name "Record display label" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:prefLabel ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have close meaning." ;
            sh:name "Close mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 8 ;
            sh:path skos:closeMatch ] ;
    sh:targetClass dlflat:FlatThing .

dlidentifiers:ComputedIdentifier a sh:NodeShape ;
    rdfs:comment "An identifier that has been derived from information on the identified entity." ;
    sh:closed true ;
    sh:ignoredProperties ( rdf:type ) ;
    sh:property [ sh:datatype xsd:string ;
            sh:description "String of characters such as \"T58:5\" or \"30:4833\" used to uniquely identify a concept within the scope of a given concept scheme." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path dlidentifiers:notation ],
        [ sh:datatype xsd:anyURI ;
            sh:description "An agent responsible for making an entity." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path dlidentifiers:creator ],
        [ sh:datatype rdfs:Resource ;
            sh:description "State that the subject is an instance of a particular schema class. Typically, no explicit value needs to be assigned to this slot, because it matches the class type of a particular record. However, this slots can be used as a type designator of a schema element for validation and schema structure handling purposes. This is used to indicate specialized schema classes for properties that accept a hierarchy of classes as their range." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdf:type ] ;
    sh:targetClass dlidentifiers:ComputedIdentifier .

dlidentifiers:DOI a sh:NodeShape ;
    rdfs:comment "Digital Object Identifier (DOI; ISO 26324), an identifier system governed by the DOI Foundation, where individual identifiers are issued by one of several registration agencies." ;
    sh:closed true ;
    sh:ignoredProperties ( rdf:type ) ;
    sh:property [ sh:datatype rdfs:Resource ;
            sh:description "State that the subject is an instance of a particular schema class. Typically, no explicit value needs to be assigned to this slot, because it matches the class type of a particular record. However, this slots can be used as a type designator of a schema element for validation and schema structure handling purposes. This is used to indicate specialized schema classes for properties that accept a hierarchy of classes as their range." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdf:type ],
        [ sh:datatype xsd:string ;
            sh:description "The identifier notation is specified without a URL-prefix, or a `doi:` prefix." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path dlidentifiers:notation ;
            sh:pattern "(?i)^(?!(?:https?://|doi:)).+$" ],
        [ sh:datatype xsd:anyURI ;
            sh:defaultValue "https://doi.org"^^xsd:anyURI ;
            sh:description "By default, the creator is identified as \"https://doi.org\"." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path dlidentifiers:creator ],
        [ sh:datatype xsd:string ;
            sh:defaultValue "DOI Foundation"^^xsd:string ;
            sh:description "By default, the schema agency is identified as `DOI Foundation`." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path dlidentifiers:schema_agency ] ;
    sh:targetClass dlidentifiers:DOI .

dlidentifiers:IssuedIdentifier a sh:NodeShape ;
    rdfs:comment "An identifier that was issued by a particular agent with a notation that has no (or an undefined) relation to the nature of the identified entity." ;
    sh:closed true ;
    sh:ignoredProperties ( rdf:type ) ;
    sh:property [ sh:datatype xsd:string ;
            sh:description "Name of the agency that issued an identifier." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path dlidentifiers:schema_agency ],
        [ sh:datatype rdfs:Resource ;
            sh:description "State that the subject is an instance of a particular schema class. Typically, no explicit value needs to be assigned to this slot, because it matches the class type of a particular record. However, this slots can be used as a type designator of a schema element for validation and schema structure handling purposes. This is used to indicate specialized schema classes for properties that accept a hierarchy of classes as their range." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdf:type ],
        [ sh:datatype xsd:string ;
            sh:description "String of characters such as \"T58:5\" or \"30:4833\" used to uniquely identify a concept within the scope of a given concept scheme." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path dlidentifiers:notation ],
        [ sh:datatype xsd:anyURI ;
            sh:description "An agent responsible for making an entity." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path dlidentifiers:creator ] ;
    sh:targetClass dlidentifiers:IssuedIdentifier .

dlthings:ThingMixin a sh:NodeShape ;
    rdfs:comment "Mix-in with the common interface of `Thing` and `AttributeSpecification`. This interface enables type specifications (`rdf:type`) for things and attributes via a `type` designator slot to indicate specialized schema classes for validation where a slot's `range` is too generic. A thing or attribute can be further describe with statements on qualified relations to other things (`characterized_by`), or inline attributes (`attributes`). A set of `mappings` slots enables the alignment for arbitrary external schemas and terminologies." ;
    sh:closed false ;
    sh:ignoredProperties ( rdf:type ) ;
    sh:property [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ;
            sh:name "Narrow mappings" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:narrowMatch ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ;
            sh:name "Exact mappings" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:exactMatch ],
        [ sh:class dlthings:AttributeSpecification ;
            sh:description "Declares a relation that associates a `Thing` (or another attribute) with an attribute, where an attribute is an intrinsic characteristic, such as a quality, capability, disposition, function, or is an externally derived attribute determined from some descriptor (e.g. a quantity, position, label/identifier). Technically, this declaration is done via an `AttributeSpecification` that combines a `predicate` with a value declaration and the attribute-related slots of a `Thing`. Importantly, such attributes are declared inline, because they do not have a unique identifier. If an identifier is available, a `Thing` declaration (see `relation`), and a qualification of that relationship via a `Statement` (see `characterized_by`) should be preferred." ;
            sh:name "Attributes" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:path dlthings:attributes ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have related meaning." ;
            sh:name "Related mappings" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:relatedMatch ],
        [ sh:class dlthings:Statement ;
            sh:description "Qualifies relationships between a subject `Thing` and an object `Thing` with a `Statement` declaring a `predicate` on the nature of the relationship." ;
            sh:name "Is characterized by" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:path dlthings:characterized_by ],
        [ sh:class dlthings:Annotation ;
            sh:description "A record of properties of the metadata record on a subject, a collection of tag/text tuples with the semantics of OWL Annotation." ;
            sh:name "Annotations" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:path dlthings:annotations ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have close meaning." ;
            sh:name "Close mappings" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:closeMatch ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A free-text account of the subject." ;
            sh:maxCount 1 ;
            sh:name "Description" ;
            sh:nodeKind sh:Literal ;
            sh:path dlthings:description ],
        [ sh:datatype rdfs:Resource ;
            sh:description "State that the subject is an instance of a particular schema class. Typically, no explicit value needs to be assigned to this slot, because it matches the class type of a particular record. However, this slots can be used as a type designator of a schema element for validation and schema structure handling purposes. This is used to indicate specialized schema classes for properties that accept a hierarchy of classes as their range." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdf:type ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ;
            sh:name "Broad mappings" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:broadMatch ] ;
    sh:targetClass dlthings:ThingMixin .

dlthings:ValueSpecification a sh:NodeShape ;
    rdfs:comment "A `Thing` that is a value of some kind. This class can be used to describe an outcome of a measurement, a factual value or constant, or other qualitative or quantitative information with an associated identifier. If no identifier is available, an `AttributeSpecification` can be used within the context of an associated `Thing` (`attributes`)." ;
    sh:closed true ;
    sh:ignoredProperties ( rdf:type ) ;
    sh:property [ sh:datatype xsd:string ;
            sh:description "Value that is a direct representation of a thing." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdf:value ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have close meaning." ;
            sh:name "Close mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 8 ;
            sh:path skos:closeMatch ],
        [ sh:class dlthings:Annotation ;
            sh:description "A record of properties of the metadata record on a subject, a collection of tag/text tuples with the semantics of OWL Annotation." ;
            sh:name "Annotations" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 5 ;
            sh:path dlthings:annotations ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A free-text account of the subject." ;
            sh:maxCount 1 ;
            sh:name "Description" ;
            sh:nodeKind sh:Literal ;
            sh:order 4 ;
            sh:path dlthings:description ],
        [ sh:datatype xsd:anyURI ;
            sh:description "Declares that the value of a `Thing` or `AttributeSpecification` are instances of a particular class." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdfs:range ],
        [ sh:class dlthings:Thing ;
            sh:description "Declares an unqualified relation of the subject `Thing` to another `Thing`. This schema slot is used to define related things inline. If such a definition is not needed. A qualified relationship can be declared directly using the `characterized_by` slot." ;
            sh:name "Relations" ;
            sh:nodeKind sh:IRI ;
            sh:order 6 ;
            sh:path dlthings:relation ],
        [ sh:datatype rdfs:Resource ;
            sh:description "State that the subject is an instance of a particular schema class. Typically, no explicit value needs to be assigned to this slot, because it matches the class type of a particular record. However, this slots can be used as a type designator of a schema element for validation and schema structure handling purposes. This is used to indicate specialized schema classes for properties that accept a hierarchy of classes as their range." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdf:type ],
        [ sh:class dlthings:AttributeSpecification ;
            sh:description "Declares a relation that associates a `Thing` (or another attribute) with an attribute, where an attribute is an intrinsic characteristic, such as a quality, capability, disposition, function, or is an externally derived attribute determined from some descriptor (e.g. a quantity, position, label/identifier). Technically, this declaration is done via an `AttributeSpecification` that combines a `predicate` with a value declaration and the attribute-related slots of a `Thing`. Importantly, such attributes are declared inline, because they do not have a unique identifier. If an identifier is available, a `Thing` declaration (see `relation`), and a qualification of that relationship via a `Statement` (see `characterized_by`) should be preferred." ;
            sh:name "Attributes" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 3 ;
            sh:path dlthings:attributes ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have related meaning." ;
            sh:name "Related mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 11 ;
            sh:path skos:relatedMatch ],
        [ sh:datatype xsd:anyURI ;
            sh:description "Persistent and globally unique identifier of a `Thing`." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:name "Persistent identifier" ;
            sh:nodeKind sh:Literal ;
            sh:order 1 ;
            sh:path dlthings:pid ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ;
            sh:name "Exact mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 7 ;
            sh:path skos:exactMatch ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ;
            sh:name "Narrow mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 10 ;
            sh:path skos:narrowMatch ],
        [ sh:class dlthings:Statement ;
            sh:description "Qualifies relationships between a subject `Thing` and an object `Thing` with a `Statement` declaring a `predicate` on the nature of the relationship." ;
            sh:name "Is characterized by" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 2 ;
            sh:path dlthings:characterized_by ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ;
            sh:name "Broad mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 9 ;
            sh:path skos:broadMatch ] ;
    sh:targetClass dlthings:ValueSpecification .

dlthings:ValueSpecificationMixin a sh:NodeShape ;
    rdfs:comment "Mix-in for a (structured) value specification. Two slots are provided to define a (literal) value (`value`) and its type (`range`)." ;
    sh:closed false ;
    sh:ignoredProperties ( rdf:type ) ;
    sh:property [ sh:datatype xsd:string ;
            sh:description "Value that is a direct representation of a thing." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdf:value ],
        [ sh:datatype xsd:anyURI ;
            sh:description "Declares that the value of a `Thing` or `AttributeSpecification` are instances of a particular class." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdfs:range ] ;
    sh:targetClass dlthings:ValueSpecificationMixin .

dldemoed:XYZDataItem a sh:NodeShape ;
    rdfs:label "DataItem" ;
    rdfs:comment "A single data item, the building block of Datasets. This is a conceptual entity. A DataItem might be available in more than one representation, with differing formats, and serializations." ;
    sh:closed true ;
    sh:ignoredProperties ( rdf:type ) ;
    sh:property [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A free-text account of the subject." ;
            sh:maxCount 1 ;
            sh:name "Description" ;
            sh:nodeKind sh:Literal ;
            sh:order 7 ;
            sh:path dlthings:description ],
        [ sh:class dldemoed:XYZStudyActivity ;
            sh:description "Identification of the process that led to the production of the subject entity." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:name "Generated by" ;
            sh:nodeKind sh:IRI ;
            sh:order 2 ;
            sh:path dldemoed:generated_by ],
        [ sh:class dldemoed:XYZSubject ;
            sh:description "A entity from which the subject was created through some kind of process." ;
            sh:maxCount 1 ;
            sh:name "Derived from" ;
            sh:nodeKind sh:IRI ;
            sh:order 3 ;
            sh:path dldemoed:derived_from ],
        [ sh:datatype xsd:string ;
            sh:description "Value that is a direct representation of a thing." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:order 4 ;
            sh:path rdf:value ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ;
            sh:name "Narrow mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 10 ;
            sh:path skos:narrowMatch ],
        [ sh:datatype xsd:string ;
            sh:description "Label that can be shown when the metadata record is displayed as an item." ;
            sh:maxCount 1 ;
            sh:name "Record display label" ;
            sh:nodeKind sh:Literal ;
            sh:order 8 ;
            sh:path skos:prefLabel ],
        [ sh:class dldemoed:XYZDimension ;
            sh:description "Associated outcome variables." ;
            sh:name "Outcomes variables" ;
            sh:nodeKind sh:IRI ;
            sh:order 6 ;
            sh:path dldemoed:dimensions ],
        [ sh:class dlflat:FlatAnnotation ;
            sh:description "A record of properties of the metadata record on a subject, a collection of tag/text tuples with the semantics of OWL Annotation." ;
            sh:name "Annotations" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 5 ;
            sh:path dlthings:annotations ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ;
            sh:name "Broad mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 9 ;
            sh:path skos:broadMatch ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have close meaning." ;
            sh:name "Close mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 8 ;
            sh:path skos:closeMatch ],
        [ sh:class dlthings:Thing ;
            sh:description "Declares an unqualified relation of the subject `Thing` to another `Thing`. This schema slot is used to define related things inline. If such a definition is not needed. A qualified relationship can be declared directly using the `characterized_by` slot." ;
            sh:name "Relations" ;
            sh:nodeKind sh:IRI ;
            sh:order 6 ;
            sh:path dlthings:relation ],
        [ sh:datatype rdfs:Resource ;
            sh:description "State that the subject is an instance of a particular schema class. Typically, no explicit value needs to be assigned to this slot, because it matches the class type of a particular record. However, this slots can be used as a type designator of a schema element for validation and schema structure handling purposes. This is used to indicate specialized schema classes for properties that accept a hierarchy of classes as their range." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdf:type ],
        [ sh:class dldemoed:XYZUnit ;
            sh:description "Unit of the quantitative value associated with the subject entity." ;
            sh:maxCount 1 ;
            sh:name "Unit" ;
            sh:nodeKind sh:IRI ;
            sh:order 5 ;
            sh:path dldemoed:unit ],
        [ sh:class dlidentifiers:Identifier ;
            sh:description "An unambiguous reference to the subject within a given context." ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:path dlidentifiers:identifier ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "Note that can be shown when the record is displayed as an item. This is typically longer than a label." ;
            sh:maxCount 1 ;
            sh:name "Record display note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:note ],
        [ sh:class dlflat:FlatAttributeSpecification ;
            sh:description "Declares a relation that associates a `Thing` (or another attribute) with an attribute, where an attribute is an intrinsic characteristic, such as a quality, capability, disposition, function, or is an externally derived attribute determined from some descriptor (e.g. a quantity, position, label/identifier). Technically, this declaration is done via an `AttributeSpecification` that combines a `predicate` with a value declaration and the attribute-related slots of a `Thing`. Importantly, such attributes are declared inline, because they do not have a unique identifier. If an identifier is available, a `Thing` declaration (see `relation`), and a qualification of that relationship via a `Statement` (see `characterized_by`) should be preferred." ;
            sh:name "Attributes" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 3 ;
            sh:path dlthings:attributes ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A comment about a metadata record either providing additional information for a record curation, or leaving a comment after curation occurred. This can be used to include information that is deemed relevant, but could not be expressed in the provided fields." ;
            sh:name "Editorial note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:editorialNote ],
        [ sh:datatype xsd:anyURI ;
            sh:description "Persistent and globally unique identifier of a `Thing`." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:name "Persistent identifier" ;
            sh:nodeKind sh:Literal ;
            sh:order 1 ;
            sh:path dlthings:pid ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have related meaning." ;
            sh:name "Related mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 11 ;
            sh:path skos:relatedMatch ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ;
            sh:name "Exact mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 7 ;
            sh:path skos:exactMatch ],
        [ sh:class dlflat:FlatStatement ;
            sh:description "Qualifies relationships between a subject `Thing` and an object `Thing` with a `Statement` declaring a `predicate` on the nature of the relationship." ;
            sh:name "Is characterized by" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 2 ;
            sh:path dlthings:characterized_by ],
        [ sh:class dldemoed:XYZDataset ;
            sh:description "The entity that the subject is a part of. A core relation that holds between a part and its whole." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:nodeKind sh:IRI ;
            sh:order 1 ;
            sh:path dldemoed:part_of ] ;
    sh:targetClass dldemoed:XYZDataItem .

dldemoed:XYZDistribution a sh:NodeShape ;
    rdfs:label "Distribution" ;
    rdfs:comment "A specific representation of a data item, which may come in the form of an electronic file, or an archive or directory of many files, may be standalone or part of a larger collection." ;
    sh:closed true ;
    sh:ignoredProperties ( rdf:type ) ;
    sh:property [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A comment about a metadata record either providing additional information for a record curation, or leaving a comment after curation occurred. This can be used to include information that is deemed relevant, but could not be expressed in the provided fields." ;
            sh:name "Editorial note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:editorialNote ],
        [ sh:class dldemoed:XYZDistribution ;
            sh:description "The entity that the subject is a part of. A core relation that holds between a part and its whole." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:IRI ;
            sh:order 3 ;
            sh:path dldemoed:part_of ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "Note that can be shown when the record is displayed as an item. This is typically longer than a label." ;
            sh:maxCount 1 ;
            sh:name "Record display note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:note ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have close meaning." ;
            sh:name "Close mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 8 ;
            sh:path skos:closeMatch ],
        [ sh:datatype xsd:anyURI ;
            sh:description "Persistent and globally unique identifier of a `Thing`." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:name "Persistent identifier" ;
            sh:nodeKind sh:Literal ;
            sh:order 1 ;
            sh:path dlthings:pid ],
        [ sh:class dlthings:Thing ;
            sh:description "Declares an unqualified relation of the subject `Thing` to another `Thing`. This schema slot is used to define related things inline. If such a definition is not needed. A qualified relationship can be declared directly using the `characterized_by` slot." ;
            sh:name "Relations" ;
            sh:nodeKind sh:IRI ;
            sh:order 6 ;
            sh:path dlthings:relation ],
        [ sh:class dlidentifiers:Identifier ;
            sh:description "An unambiguous reference to the subject within a given context." ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:path dlidentifiers:identifier ],
        [ sh:datatype xsd:nonNegativeInteger ;
            sh:description "The size of the subject in bytes." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:order 4 ;
            sh:path dldemoed:byte_size ],
        [ sh:class dlidentifiers:Checksum ;
            sh:description "The checksum property provides a mechanism that can be used to verify that the contents of a file or package have not changed." ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 7 ;
            sh:path dldemoed:checksums ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have related meaning." ;
            sh:name "Related mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 11 ;
            sh:path skos:relatedMatch ],
        [ sh:class dlflat:FlatAttributeSpecification ;
            sh:description "Declares a relation that associates a `Thing` (or another attribute) with an attribute, where an attribute is an intrinsic characteristic, such as a quality, capability, disposition, function, or is an externally derived attribute determined from some descriptor (e.g. a quantity, position, label/identifier). Technically, this declaration is done via an `AttributeSpecification` that combines a `predicate` with a value declaration and the attribute-related slots of a `Thing`. Importantly, such attributes are declared inline, because they do not have a unique identifier. If an identifier is available, a `Thing` declaration (see `relation`), and a qualification of that relationship via a `Statement` (see `characterized_by`) should be preferred." ;
            sh:name "Attributes" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 3 ;
            sh:path dlthings:attributes ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ;
            sh:name "Exact mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 7 ;
            sh:path skos:exactMatch ],
        [ sh:datatype rdfs:Resource ;
            sh:description "State that the subject is an instance of a particular schema class. Typically, no explicit value needs to be assigned to this slot, because it matches the class type of a particular record. However, this slots can be used as a type designator of a schema element for validation and schema structure handling purposes. This is used to indicate specialized schema classes for properties that accept a hierarchy of classes as their range." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdf:type ],
        [ sh:datatype xsd:string ;
            sh:description "Label that can be shown when the metadata record is displayed as an item." ;
            sh:maxCount 1 ;
            sh:name "Record display label" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:prefLabel ],
        [ sh:description "The resource that the subject is a distribution of." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:or ( [ sh:class dldemoed:XYZDataset ] [ sh:class dldemoed:XYZDataItem ] ) ;
            sh:order 1 ;
            sh:path dldemoed:distribution_of ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ;
            sh:name "Broad mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 9 ;
            sh:path skos:broadMatch ],
        [ sh:class dlflat:FlatAnnotation ;
            sh:description "A record of properties of the metadata record on a subject, a collection of tag/text tuples with the semantics of OWL Annotation." ;
            sh:name "Annotations" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 5 ;
            sh:path dlthings:annotations ],
        [ sh:class dldemoed:XYZFileFormat ;
            sh:description "The file format of a distribution." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:IRI ;
            sh:order 5 ;
            sh:path dldemoed:format ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A free-text account of the subject." ;
            sh:maxCount 1 ;
            sh:name "Description" ;
            sh:nodeKind sh:Literal ;
            sh:order 4 ;
            sh:path dlthings:description ],
        [ sh:class dlflat:FlatStatement ;
            sh:description "Qualifies relationships between a subject `Thing` and an object `Thing` with a `Statement` declaring a `predicate` on the nature of the relationship." ;
            sh:name "Is characterized by" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 2 ;
            sh:path dlthings:characterized_by ],
        [ sh:datatype xsd:string ;
            sh:description "(File) name of the distribution. If the distribution is part of another distribution, the name is interpreted as a relative path within the parent distribution. This relative path may contain intermediate directories, and must be encoded using POSIX conventions." ;
            sh:maxCount 1 ;
            sh:name "Name" ;
            sh:nodeKind sh:Literal ;
            sh:order 2 ;
            sh:path dldemoed:name ],
        [ sh:datatype xsd:string ;
            sh:description "The media type of a distribution as defined by IANA" ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:order 6 ;
            sh:path dldemoed:media_type ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ;
            sh:name "Narrow mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 10 ;
            sh:path skos:narrowMatch ] ;
    sh:targetClass dldemoed:XYZDistribution .

dldemoed:XYZFileFormat a sh:NodeShape ;
    rdfs:label "FileFormat" ;
    rdfs:comment "The file format of a distribution." ;
    sh:closed true ;
    sh:ignoredProperties ( rdf:type ) ;
    sh:property [ sh:class dlflat:FlatAnnotation ;
            sh:description "A record of properties of the metadata record on a subject, a collection of tag/text tuples with the semantics of OWL Annotation." ;
            sh:name "Annotations" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 5 ;
            sh:path dlthings:annotations ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A free-text account of the subject." ;
            sh:maxCount 1 ;
            sh:name "Description" ;
            sh:nodeKind sh:Literal ;
            sh:order 3 ;
            sh:path dlthings:description ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "Note that can be shown when the record is displayed as an item. This is typically longer than a label." ;
            sh:maxCount 1 ;
            sh:name "Record display note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:note ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have close meaning." ;
            sh:name "Close mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 8 ;
            sh:path skos:closeMatch ],
        [ sh:datatype xsd:anyURI ;
            sh:description "Persistent and globally unique identifier of a `Thing`." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:name "Persistent identifier" ;
            sh:nodeKind sh:Literal ;
            sh:order 1 ;
            sh:path dlthings:pid ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A comment about a metadata record either providing additional information for a record curation, or leaving a comment after curation occurred. This can be used to include information that is deemed relevant, but could not be expressed in the provided fields." ;
            sh:name "Editorial note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:editorialNote ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ;
            sh:name "Narrow mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 10 ;
            sh:path skos:narrowMatch ],
        [ sh:datatype xsd:string ;
            sh:description "Label that can be shown when the metadata record is displayed as an item." ;
            sh:maxCount 1 ;
            sh:name "Record display label" ;
            sh:nodeKind sh:Literal ;
            sh:order 4 ;
            sh:path skos:prefLabel ],
        [ sh:class dlidentifiers:Identifier ;
            sh:description "An unambiguous reference to the subject within a given context." ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:path dlidentifiers:identifier ],
        [ sh:datatype rdfs:Resource ;
            sh:description "State that the subject is an instance of a particular schema class. Typically, no explicit value needs to be assigned to this slot, because it matches the class type of a particular record. However, this slots can be used as a type designator of a schema element for validation and schema structure handling purposes. This is used to indicate specialized schema classes for properties that accept a hierarchy of classes as their range." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdf:type ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have related meaning." ;
            sh:name "Related mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 11 ;
            sh:path skos:relatedMatch ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ;
            sh:name "Exact mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 7 ;
            sh:path skos:exactMatch ],
        [ sh:class dlflat:FlatAttributeSpecification ;
            sh:description "Declares a relation that associates a `Thing` (or another attribute) with an attribute, where an attribute is an intrinsic characteristic, such as a quality, capability, disposition, function, or is an externally derived attribute determined from some descriptor (e.g. a quantity, position, label/identifier). Technically, this declaration is done via an `AttributeSpecification` that combines a `predicate` with a value declaration and the attribute-related slots of a `Thing`. Importantly, such attributes are declared inline, because they do not have a unique identifier. If an identifier is available, a `Thing` declaration (see `relation`), and a qualification of that relationship via a `Statement` (see `characterized_by`) should be preferred." ;
            sh:name "Attributes" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 3 ;
            sh:path dlthings:attributes ],
        [ sh:datatype xsd:string ;
            sh:description "Name of the subject." ;
            sh:maxCount 1 ;
            sh:name "Name" ;
            sh:nodeKind sh:Literal ;
            sh:order 1 ;
            sh:path dldemoed:name ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ;
            sh:name "Broad mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 9 ;
            sh:path skos:broadMatch ],
        [ sh:datatype xsd:string ;
            sh:description "A shortened name for the subject. For example, an acronym, initialism, nickname, or other abbreviation of the name or title." ;
            sh:maxCount 1 ;
            sh:name "Short name" ;
            sh:nodeKind sh:Literal ;
            sh:order 2 ;
            sh:path dldemoed:short_name ],
        [ sh:class dlthings:Thing ;
            sh:description "Declares an unqualified relation of the subject `Thing` to another `Thing`. This schema slot is used to define related things inline. If such a definition is not needed. A qualified relationship can be declared directly using the `characterized_by` slot." ;
            sh:name "Relations" ;
            sh:nodeKind sh:IRI ;
            sh:order 6 ;
            sh:path dlthings:relation ],
        [ sh:class dlflat:FlatStatement ;
            sh:description "Qualifies relationships between a subject `Thing` and an object `Thing` with a `Statement` declaring a `predicate` on the nature of the relationship." ;
            sh:name "Is characterized by" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 2 ;
            sh:path dlthings:characterized_by ] ;
    sh:targetClass dldemoed:XYZFileFormat .

dldemoed:XYZPerson a sh:NodeShape ;
    rdfs:label "Person" ;
    rdfs:comment "A person." ;
    sh:closed true ;
    sh:ignoredProperties ( rdf:type ) ;
    sh:property [ sh:class dlthings:Thing ;
            sh:description "Declares an unqualified relation of the subject `Thing` to another `Thing`. This schema slot is used to define related things inline. If such a definition is not needed. A qualified relationship can be declared directly using the `characterized_by` slot." ;
            sh:name "Relations" ;
            sh:nodeKind sh:IRI ;
            sh:order 6 ;
            sh:path dlthings:relation ],
        [ sh:datatype xsd:anyURI ;
            sh:description "Persistent and globally unique identifier of a `Thing`." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:name "Persistent identifier" ;
            sh:nodeKind sh:Literal ;
            sh:order 1 ;
            sh:path dlthings:pid ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ;
            sh:name "Exact mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 7 ;
            sh:path skos:exactMatch ],
        [ sh:class dlflat:FlatAttributeSpecification ;
            sh:description "Declares a relation that associates a `Thing` (or another attribute) with an attribute, where an attribute is an intrinsic characteristic, such as a quality, capability, disposition, function, or is an externally derived attribute determined from some descriptor (e.g. a quantity, position, label/identifier). Technically, this declaration is done via an `AttributeSpecification` that combines a `predicate` with a value declaration and the attribute-related slots of a `Thing`. Importantly, such attributes are declared inline, because they do not have a unique identifier. If an identifier is available, a `Thing` declaration (see `relation`), and a qualification of that relationship via a `Statement` (see `characterized_by`) should be preferred." ;
            sh:name "Attributes" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 3 ;
            sh:path dlthings:attributes ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ;
            sh:name "Broad mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 9 ;
            sh:path skos:broadMatch ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "Note that can be shown when the record is displayed as an item. This is typically longer than a label." ;
            sh:maxCount 1 ;
            sh:name "Record display note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:note ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have related meaning." ;
            sh:name "Related mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 11 ;
            sh:path skos:relatedMatch ],
        [ sh:datatype xsd:string ;
            sh:description "Additional name(s) associated with the subject, such as one or more middle names, or a nick name." ;
            sh:name "Additional names" ;
            sh:nodeKind sh:Literal ;
            sh:order 3 ;
            sh:path dldemoed:additional_names ],
        [ sh:class dlidentifiers:Identifier ;
            sh:description "An unambiguous reference to the subject within a given context." ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:path dlidentifiers:identifier ],
        [ sh:datatype xsd:string ;
            sh:description "The given (non-inherited) name of the subject." ;
            sh:maxCount 1 ;
            sh:name "Given name" ;
            sh:nodeKind sh:Literal ;
            sh:order 2 ;
            sh:path dldemoed:given_name ],
        [ sh:class dlflat:FlatStatement ;
            sh:description "Qualifies relationships between a subject `Thing` and an object `Thing` with a `Statement` declaring a `predicate` on the nature of the relationship." ;
            sh:name "Is characterized by" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 2 ;
            sh:path dlthings:characterized_by ],
        [ sh:class dlflat:FlatAnnotation ;
            sh:description "A record of properties of the metadata record on a subject, a collection of tag/text tuples with the semantics of OWL Annotation." ;
            sh:name "Annotations" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 5 ;
            sh:path dlthings:annotations ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have close meaning." ;
            sh:name "Close mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 8 ;
            sh:path skos:closeMatch ],
        [ sh:datatype xsd:string ;
            sh:description "Associated ORCID identifier (see https://orcid.org)." ;
            sh:maxCount 1 ;
            sh:name "ORCID" ;
            sh:nodeKind sh:Literal ;
            sh:order 7 ;
            sh:path dldemoed:orcid ;
            sh:pattern "^\\d{4}-\\d{4}-\\d{4}-\\d{3}[0-9X]{1}$" ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A free-text account of the subject." ;
            sh:maxCount 1 ;
            sh:name "Description" ;
            sh:nodeKind sh:Literal ;
            sh:order 4 ;
            sh:path dlthings:description ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ;
            sh:name "Narrow mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 10 ;
            sh:path skos:narrowMatch ],
        [ sh:class dldemoed:XYZOrganization ;
            sh:description "The subject is a member of an organization." ;
            sh:name "Member of" ;
            sh:nodeKind sh:IRI ;
            sh:order 8 ;
            sh:path dldemoed:member_of ],
        [ sh:datatype xsd:string ;
            sh:description "The honorific prefix(es) of the subject's name. For example, (academic/formal) titles like \"Mrs\", or \"Dr\", \"Dame\"." ;
            sh:maxCount 1 ;
            sh:name "Title or prefix" ;
            sh:nodeKind sh:Literal ;
            sh:order 4 ;
            sh:path dldemoed:honorific_name_prefix ],
        [ sh:datatype dltypes:EmailAddress ;
            sh:description "Associated email address." ;
            sh:name "Email(s)" ;
            sh:nodeKind sh:Literal ;
            sh:order 6 ;
            sh:path dldemoed:emails ;
            sh:pattern "(?:[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?\\.)+[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?|\\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[A-Za-z0-9-]*[A-Za-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])" ],
        [ sh:datatype xsd:string ;
            sh:description "Label that can be shown when the metadata record is displayed as an item." ;
            sh:maxCount 1 ;
            sh:name "Record display label" ;
            sh:nodeKind sh:Literal ;
            sh:order 9 ;
            sh:path skos:prefLabel ],
        [ sh:datatype xsd:string ;
            sh:description "The honorific suffix(es) of the subject's name. For example, generation labels (\"III\"), or indicators of an academic degree, a profession, or a position (\"MD\", \"BA\")." ;
            sh:maxCount 1 ;
            sh:name "Suffix" ;
            sh:nodeKind sh:Literal ;
            sh:order 5 ;
            sh:path dldemoed:honorific_name_suffix ],
        [ sh:datatype xsd:string ;
            sh:description "The (inherited) family name of the subject. In many Western languages this is the \"last name\"." ;
            sh:maxCount 1 ;
            sh:name "Family name" ;
            sh:nodeKind sh:Literal ;
            sh:order 1 ;
            sh:path dldemoed:family_name ],
        [ sh:datatype rdfs:Resource ;
            sh:description "State that the subject is an instance of a particular schema class. Typically, no explicit value needs to be assigned to this slot, because it matches the class type of a particular record. However, this slots can be used as a type designator of a schema element for validation and schema structure handling purposes. This is used to indicate specialized schema classes for properties that accept a hierarchy of classes as their range." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdf:type ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A comment about a metadata record either providing additional information for a record curation, or leaving a comment after curation occurred. This can be used to include information that is deemed relevant, but could not be expressed in the provided fields." ;
            sh:name "Editorial note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:editorialNote ] ;
    sh:targetClass dldemoed:XYZPerson .

dldemoed:XYZSubjectType a sh:NodeShape ;
    rdfs:label "SubjectType" ;
    rdfs:comment "Classifier for the nature of a subject." ;
    sh:closed true ;
    sh:ignoredProperties ( rdf:type ) ;
    sh:property [ sh:datatype xsd:anyURI ;
            sh:description "Persistent and globally unique identifier of a `Thing`." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:name "Persistent identifier" ;
            sh:nodeKind sh:Literal ;
            sh:order 1 ;
            sh:path dlthings:pid ],
        [ sh:class dlthings:Thing ;
            sh:description "Declares an unqualified relation of the subject `Thing` to another `Thing`. This schema slot is used to define related things inline. If such a definition is not needed. A qualified relationship can be declared directly using the `characterized_by` slot." ;
            sh:name "Relations" ;
            sh:nodeKind sh:IRI ;
            sh:order 6 ;
            sh:path dlthings:relation ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have related meaning." ;
            sh:name "Related mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 11 ;
            sh:path skos:relatedMatch ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "Note that can be shown when the record is displayed as an item. This is typically longer than a label." ;
            sh:maxCount 1 ;
            sh:name "Record display note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:note ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ;
            sh:name "Exact mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 7 ;
            sh:path skos:exactMatch ],
        [ sh:class dlidentifiers:Identifier ;
            sh:description "An unambiguous reference to the subject within a given context." ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:path dlidentifiers:identifier ],
        [ sh:datatype xsd:string ;
            sh:description "Name of the subject." ;
            sh:maxCount 1 ;
            sh:name "Name" ;
            sh:nodeKind sh:Literal ;
            sh:order 1 ;
            sh:path dldemoed:name ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have close meaning." ;
            sh:name "Close mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 8 ;
            sh:path skos:closeMatch ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ;
            sh:name "Narrow mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 10 ;
            sh:path skos:narrowMatch ],
        [ sh:class dlflat:FlatAnnotation ;
            sh:description "A record of properties of the metadata record on a subject, a collection of tag/text tuples with the semantics of OWL Annotation." ;
            sh:name "Annotations" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 5 ;
            sh:path dlthings:annotations ],
        [ sh:class dlflat:FlatAttributeSpecification ;
            sh:description "Declares a relation that associates a `Thing` (or another attribute) with an attribute, where an attribute is an intrinsic characteristic, such as a quality, capability, disposition, function, or is an externally derived attribute determined from some descriptor (e.g. a quantity, position, label/identifier). Technically, this declaration is done via an `AttributeSpecification` that combines a `predicate` with a value declaration and the attribute-related slots of a `Thing`. Importantly, such attributes are declared inline, because they do not have a unique identifier. If an identifier is available, a `Thing` declaration (see `relation`), and a qualification of that relationship via a `Statement` (see `characterized_by`) should be preferred." ;
            sh:name "Attributes" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 3 ;
            sh:path dlthings:attributes ],
        [ sh:datatype rdfs:Resource ;
            sh:description "State that the subject is an instance of a particular schema class. Typically, no explicit value needs to be assigned to this slot, because it matches the class type of a particular record. However, this slots can be used as a type designator of a schema element for validation and schema structure handling purposes. This is used to indicate specialized schema classes for properties that accept a hierarchy of classes as their range." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdf:type ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A free-text account of the subject." ;
            sh:maxCount 1 ;
            sh:name "Description" ;
            sh:nodeKind sh:Literal ;
            sh:order 2 ;
            sh:path dlthings:description ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A comment about a metadata record either providing additional information for a record curation, or leaving a comment after curation occurred. This can be used to include information that is deemed relevant, but could not be expressed in the provided fields." ;
            sh:name "Editorial note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:editorialNote ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ;
            sh:name "Broad mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 9 ;
            sh:path skos:broadMatch ],
        [ sh:datatype xsd:string ;
            sh:description "Label that can be shown when the metadata record is displayed as an item." ;
            sh:maxCount 1 ;
            sh:name "Record display label" ;
            sh:nodeKind sh:Literal ;
            sh:order 3 ;
            sh:path skos:prefLabel ],
        [ sh:class dlflat:FlatStatement ;
            sh:description "Qualifies relationships between a subject `Thing` and an object `Thing` with a `Statement` declaring a `predicate` on the nature of the relationship." ;
            sh:name "Is characterized by" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 2 ;
            sh:path dlthings:characterized_by ] ;
    sh:targetClass dldemoed:XYZSubjectType .

dldemoed:XYZUnit a sh:NodeShape ;
    rdfs:label "Unit" ;
    rdfs:comment "Standardized quantity of a physical quality." ;
    sh:closed true ;
    sh:ignoredProperties ( rdf:type ) ;
    sh:property [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "Note that can be shown when the record is displayed as an item. This is typically longer than a label." ;
            sh:maxCount 1 ;
            sh:name "Record display note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:note ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A comment about a metadata record either providing additional information for a record curation, or leaving a comment after curation occurred. This can be used to include information that is deemed relevant, but could not be expressed in the provided fields." ;
            sh:name "Editorial note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:editorialNote ],
        [ sh:datatype xsd:anyURI ;
            sh:description "Persistent and globally unique identifier of a `Thing`." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:name "Persistent identifier" ;
            sh:nodeKind sh:Literal ;
            sh:order 1 ;
            sh:path dlthings:pid ],
        [ sh:class dlflat:FlatAnnotation ;
            sh:description "A record of properties of the metadata record on a subject, a collection of tag/text tuples with the semantics of OWL Annotation." ;
            sh:name "Annotations" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 5 ;
            sh:path dlthings:annotations ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have related meaning." ;
            sh:name "Related mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 11 ;
            sh:path skos:relatedMatch ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ;
            sh:name "Broad mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 9 ;
            sh:path skos:broadMatch ],
        [ sh:class dlidentifiers:Identifier ;
            sh:description "An unambiguous reference to the subject within a given context." ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:path dlidentifiers:identifier ],
        [ sh:datatype xsd:string ;
            sh:description "A shortened name for the subject. For example, an acronym, initialism, nickname, or other abbreviation of the name or title." ;
            sh:maxCount 1 ;
            sh:name "Short name" ;
            sh:nodeKind sh:Literal ;
            sh:order 2 ;
            sh:path dldemoed:short_name ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A free-text account of the subject." ;
            sh:maxCount 1 ;
            sh:name "Description" ;
            sh:nodeKind sh:Literal ;
            sh:order 3 ;
            sh:path dlthings:description ],
        [ sh:datatype xsd:string ;
            sh:description "Name of the subject." ;
            sh:maxCount 1 ;
            sh:name "Name" ;
            sh:nodeKind sh:Literal ;
            sh:order 1 ;
            sh:path dldemoed:name ],
        [ sh:class dlthings:Thing ;
            sh:description "Declares an unqualified relation of the subject `Thing` to another `Thing`. This schema slot is used to define related things inline. If such a definition is not needed. A qualified relationship can be declared directly using the `characterized_by` slot." ;
            sh:name "Relations" ;
            sh:nodeKind sh:IRI ;
            sh:order 6 ;
            sh:path dlthings:relation ],
        [ sh:class dlflat:FlatStatement ;
            sh:description "Qualifies relationships between a subject `Thing` and an object `Thing` with a `Statement` declaring a `predicate` on the nature of the relationship." ;
            sh:name "Is characterized by" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 2 ;
            sh:path dlthings:characterized_by ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have close meaning." ;
            sh:name "Close mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 8 ;
            sh:path skos:closeMatch ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ;
            sh:name "Narrow mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 10 ;
            sh:path skos:narrowMatch ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ;
            sh:name "Exact mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 7 ;
            sh:path skos:exactMatch ],
        [ sh:datatype xsd:string ;
            sh:description "Label that can be shown when the metadata record is displayed as an item." ;
            sh:maxCount 1 ;
            sh:name "Record display label" ;
            sh:nodeKind sh:Literal ;
            sh:order 4 ;
            sh:path skos:prefLabel ],
        [ sh:class dlflat:FlatAttributeSpecification ;
            sh:description "Declares a relation that associates a `Thing` (or another attribute) with an attribute, where an attribute is an intrinsic characteristic, such as a quality, capability, disposition, function, or is an externally derived attribute determined from some descriptor (e.g. a quantity, position, label/identifier). Technically, this declaration is done via an `AttributeSpecification` that combines a `predicate` with a value declaration and the attribute-related slots of a `Thing`. Importantly, such attributes are declared inline, because they do not have a unique identifier. If an identifier is available, a `Thing` declaration (see `relation`), and a qualification of that relationship via a `Statement` (see `characterized_by`) should be preferred." ;
            sh:name "Attributes" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 3 ;
            sh:path dlthings:attributes ],
        [ sh:datatype rdfs:Resource ;
            sh:description "State that the subject is an instance of a particular schema class. Typically, no explicit value needs to be assigned to this slot, because it matches the class type of a particular record. However, this slots can be used as a type designator of a schema element for validation and schema structure handling purposes. This is used to indicate specialized schema classes for properties that accept a hierarchy of classes as their range." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdf:type ] ;
    sh:targetClass dldemoed:XYZUnit .

dlflat:AnnotationTag a sh:NodeShape ;
    rdfs:label "Annotation tag" ;
    rdfs:comment "A tag identifying an annotation." ;
    sh:closed true ;
    sh:ignoredProperties ( rdf:type ) ;
    sh:property [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ;
            sh:name "Narrow mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 10 ;
            sh:path skos:narrowMatch ],
        [ sh:class dlflat:FlatStatement ;
            sh:description "Qualifies relationships between a subject `Thing` and an object `Thing` with a `Statement` declaring a `predicate` on the nature of the relationship." ;
            sh:name "Is characterized by" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 2 ;
            sh:path dlthings:characterized_by ],
        [ sh:class dlflat:FlatAttributeSpecification ;
            sh:description "Declares a relation that associates a `Thing` (or another attribute) with an attribute, where an attribute is an intrinsic characteristic, such as a quality, capability, disposition, function, or is an externally derived attribute determined from some descriptor (e.g. a quantity, position, label/identifier). Technically, this declaration is done via an `AttributeSpecification` that combines a `predicate` with a value declaration and the attribute-related slots of a `Thing`. Importantly, such attributes are declared inline, because they do not have a unique identifier. If an identifier is available, a `Thing` declaration (see `relation`), and a qualification of that relationship via a `Statement` (see `characterized_by`) should be preferred." ;
            sh:name "Attributes" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 3 ;
            sh:path dlthings:attributes ],
        [ sh:datatype rdfs:Resource ;
            sh:description "State that the subject is an instance of a particular schema class. Typically, no explicit value needs to be assigned to this slot, because it matches the class type of a particular record. However, this slots can be used as a type designator of a schema element for validation and schema structure handling purposes. This is used to indicate specialized schema classes for properties that accept a hierarchy of classes as their range." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdf:type ],
        [ sh:class dlthings:Thing ;
            sh:description "Declares an unqualified relation of the subject `Thing` to another `Thing`. This schema slot is used to define related things inline. If such a definition is not needed. A qualified relationship can be declared directly using the `characterized_by` slot." ;
            sh:name "Relations" ;
            sh:nodeKind sh:IRI ;
            sh:order 6 ;
            sh:path dlthings:relation ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A free-text account of the subject." ;
            sh:maxCount 1 ;
            sh:name "Description" ;
            sh:nodeKind sh:Literal ;
            sh:order 4 ;
            sh:path dlthings:description ],
        [ sh:class dlflat:FlatAnnotation ;
            sh:description "A record of properties of the metadata record on a subject, a collection of tag/text tuples with the semantics of OWL Annotation." ;
            sh:name "Annotations" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 5 ;
            sh:path dlthings:annotations ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have related meaning." ;
            sh:name "Related mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 11 ;
            sh:path skos:relatedMatch ],
        [ sh:datatype xsd:string ;
            sh:description "Label that can be shown when the metadata record is displayed as an item." ;
            sh:maxCount 1 ;
            sh:name "Record display label" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:prefLabel ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ;
            sh:name "Broad mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 9 ;
            sh:path skos:broadMatch ],
        [ sh:datatype xsd:anyURI ;
            sh:description "Persistent and globally unique identifier of a `Thing`." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:name "Persistent identifier" ;
            sh:nodeKind sh:Literal ;
            sh:order 1 ;
            sh:path dlthings:pid ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have close meaning." ;
            sh:name "Close mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 8 ;
            sh:path skos:closeMatch ],
        [ sh:class dlidentifiers:Identifier ;
            sh:description "An unambiguous reference to the subject within a given context." ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:path dlidentifiers:identifier ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A comment about a metadata record either providing additional information for a record curation, or leaving a comment after curation occurred. This can be used to include information that is deemed relevant, but could not be expressed in the provided fields." ;
            sh:name "Editorial note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:editorialNote ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "Note that can be shown when the record is displayed as an item. This is typically longer than a label." ;
            sh:maxCount 1 ;
            sh:name "Record display note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:note ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ;
            sh:name "Exact mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 7 ;
            sh:path skos:exactMatch ] ;
    sh:targetClass dlflat:AnnotationTag .

dlidentifiers:Checksum a sh:NodeShape ;
    rdfs:comment "A Checksum is a value that allows to check the integrity of the contents of a file. Even small changes to the content of the file will change its checksum. This class allows the results of a variety of checksum and cryptographic message digest algorithms to be represented." ;
    sh:closed true ;
    sh:ignoredProperties ( rdf:type ) ;
    sh:property [ sh:datatype rdfs:Resource ;
            sh:description "State that the subject is an instance of a particular schema class. Typically, no explicit value needs to be assigned to this slot, because it matches the class type of a particular record. However, this slots can be used as a type designator of a schema element for validation and schema structure handling purposes. This is used to indicate specialized schema classes for properties that accept a hierarchy of classes as their range." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdf:type ],
        [ sh:datatype xsd:hexBinary ;
            sh:description "Lower case hexadecimal encoded checksum digest value." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path dlidentifiers:notation ;
            sh:pattern "^[a-fA-F0-9]+$" ],
        [ sh:datatype xsd:anyURI ;
            sh:description "Identifies the software agent (algorithm) used to produce the subject `Checksum`." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path dlidentifiers:creator ] ;
    sh:targetClass dlidentifiers:Checksum .

dldemoed:XYZInstrument a sh:NodeShape ;
    rdfs:label "Instrument" ;
    rdfs:comment "A material entity that is designed to perform a function in a scientific investigation, but is not a reagent." ;
    sh:closed true ;
    sh:ignoredProperties ( rdf:type ) ;
    sh:property [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "Note that can be shown when the record is displayed as an item. This is typically longer than a label." ;
            sh:maxCount 1 ;
            sh:name "Record display note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:note ],
        [ sh:datatype xsd:anyURI ;
            sh:description "Persistent and globally unique identifier of a `Thing`." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:name "Persistent identifier" ;
            sh:nodeKind sh:Literal ;
            sh:order 1 ;
            sh:path dlthings:pid ],
        [ sh:datatype xsd:string ;
            sh:description "A shortened name for the subject. For example, an acronym, initialism, nickname, or other abbreviation of the name or title." ;
            sh:maxCount 1 ;
            sh:name "Short name" ;
            sh:nodeKind sh:Literal ;
            sh:order 2 ;
            sh:path dldemoed:short_name ],
        [ sh:datatype xsd:string ;
            sh:description "Label that can be shown when the metadata record is displayed as an item." ;
            sh:maxCount 1 ;
            sh:name "Record display label" ;
            sh:nodeKind sh:Literal ;
            sh:order 4 ;
            sh:path skos:prefLabel ],
        [ sh:class dlflat:FlatAttributeSpecification ;
            sh:description "Declares a relation that associates a `Thing` (or another attribute) with an attribute, where an attribute is an intrinsic characteristic, such as a quality, capability, disposition, function, or is an externally derived attribute determined from some descriptor (e.g. a quantity, position, label/identifier). Technically, this declaration is done via an `AttributeSpecification` that combines a `predicate` with a value declaration and the attribute-related slots of a `Thing`. Importantly, such attributes are declared inline, because they do not have a unique identifier. If an identifier is available, a `Thing` declaration (see `relation`), and a qualification of that relationship via a `Statement` (see `characterized_by`) should be preferred." ;
            sh:name "Attributes" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 3 ;
            sh:path dlthings:attributes ],
        [ sh:class dlidentifiers:Identifier ;
            sh:description "An unambiguous reference to the subject within a given context." ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:path dlidentifiers:identifier ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ;
            sh:name "Exact mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 7 ;
            sh:path skos:exactMatch ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have close meaning." ;
            sh:name "Close mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 8 ;
            sh:path skos:closeMatch ],
        [ sh:class dlflat:FlatStatement ;
            sh:description "Qualifies relationships between a subject `Thing` and an object `Thing` with a `Statement` declaring a `predicate` on the nature of the relationship." ;
            sh:name "Is characterized by" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 2 ;
            sh:path dlthings:characterized_by ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ;
            sh:name "Narrow mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 10 ;
            sh:path skos:narrowMatch ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ;
            sh:name "Broad mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 9 ;
            sh:path skos:broadMatch ],
        [ sh:class dlflat:FlatAnnotation ;
            sh:description "A record of properties of the metadata record on a subject, a collection of tag/text tuples with the semantics of OWL Annotation." ;
            sh:name "Annotations" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 5 ;
            sh:path dlthings:annotations ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A comment about a metadata record either providing additional information for a record curation, or leaving a comment after curation occurred. This can be used to include information that is deemed relevant, but could not be expressed in the provided fields." ;
            sh:name "Editorial note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:editorialNote ],
        [ sh:datatype rdfs:Resource ;
            sh:description "State that the subject is an instance of a particular schema class. Typically, no explicit value needs to be assigned to this slot, because it matches the class type of a particular record. However, this slots can be used as a type designator of a schema element for validation and schema structure handling purposes. This is used to indicate specialized schema classes for properties that accept a hierarchy of classes as their range." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdf:type ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have related meaning." ;
            sh:name "Related mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 11 ;
            sh:path skos:relatedMatch ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A free-text account of the subject." ;
            sh:maxCount 1 ;
            sh:name "Description" ;
            sh:nodeKind sh:Literal ;
            sh:order 3 ;
            sh:path dlthings:description ],
        [ sh:class dlthings:Thing ;
            sh:description "Declares an unqualified relation of the subject `Thing` to another `Thing`. This schema slot is used to define related things inline. If such a definition is not needed. A qualified relationship can be declared directly using the `characterized_by` slot." ;
            sh:name "Relations" ;
            sh:nodeKind sh:IRI ;
            sh:order 6 ;
            sh:path dlthings:relation ],
        [ sh:datatype xsd:string ;
            sh:description "Name of the subject." ;
            sh:maxCount 1 ;
            sh:name "Name" ;
            sh:nodeKind sh:Literal ;
            sh:order 1 ;
            sh:path dldemoed:name ] ;
    sh:targetClass dldemoed:XYZInstrument .

dldemoed:XYZOrganization a sh:NodeShape ;
    rdfs:label "Organization" ;
    rdfs:comment "A social or legal institution such as a company, a society, or a university." ;
    sh:closed true ;
    sh:ignoredProperties ( rdf:type ) ;
    sh:property [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have related meaning." ;
            sh:name "Related mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 11 ;
            sh:path skos:relatedMatch ],
        [ sh:datatype xsd:string ;
            sh:description "Label that can be shown when the metadata record is displayed as an item." ;
            sh:maxCount 1 ;
            sh:name "Record display label" ;
            sh:nodeKind sh:Literal ;
            sh:order 6 ;
            sh:path skos:prefLabel ],
        [ sh:datatype rdfs:Resource ;
            sh:description "State that the subject is an instance of a particular schema class. Typically, no explicit value needs to be assigned to this slot, because it matches the class type of a particular record. However, this slots can be used as a type designator of a schema element for validation and schema structure handling purposes. This is used to indicate specialized schema classes for properties that accept a hierarchy of classes as their range." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdf:type ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ;
            sh:name "Broad mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 9 ;
            sh:path skos:broadMatch ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have close meaning." ;
            sh:name "Close mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 8 ;
            sh:path skos:closeMatch ],
        [ sh:description "Type of an organization." ;
            sh:in ( "team" "group" "division" "institute" "researchcenter" "researchorganization" "faculty" "college" "university" "nonprofit" "business" ) ;
            sh:maxCount 1 ;
            sh:name "Organization type" ;
            sh:order 3 ;
            sh:path dldemoed:organization_type ],
        [ sh:class dlidentifiers:Identifier ;
            sh:description "An unambiguous reference to the subject within a given context." ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:path dlidentifiers:identifier ],
        [ sh:class dldemoed:XYZOrganization ;
            sh:description "An organization the subject is a part of." ;
            sh:maxCount 1 ;
            sh:name "Parent organization" ;
            sh:nodeKind sh:IRI ;
            sh:order 5 ;
            sh:path dldemoed:parent_organization ],
        [ sh:class dlflat:FlatAttributeSpecification ;
            sh:description "Declares a relation that associates a `Thing` (or another attribute) with an attribute, where an attribute is an intrinsic characteristic, such as a quality, capability, disposition, function, or is an externally derived attribute determined from some descriptor (e.g. a quantity, position, label/identifier). Technically, this declaration is done via an `AttributeSpecification` that combines a `predicate` with a value declaration and the attribute-related slots of a `Thing`. Importantly, such attributes are declared inline, because they do not have a unique identifier. If an identifier is available, a `Thing` declaration (see `relation`), and a qualification of that relationship via a `Statement` (see `characterized_by`) should be preferred." ;
            sh:name "Attributes" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 3 ;
            sh:path dlthings:attributes ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ;
            sh:name "Narrow mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 10 ;
            sh:path skos:narrowMatch ],
        [ sh:datatype xsd:anyURI ;
            sh:description "Persistent and globally unique identifier of a `Thing`." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:name "Persistent identifier" ;
            sh:nodeKind sh:Literal ;
            sh:order 1 ;
            sh:path dlthings:pid ],
        [ sh:datatype xsd:string ;
            sh:description "A shortened name for the subject. For example, an acronym, initialism, nickname, or other abbreviation of the name or title." ;
            sh:maxCount 1 ;
            sh:name "Short name" ;
            sh:nodeKind sh:Literal ;
            sh:order 2 ;
            sh:path dldemoed:short_name ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "Note that can be shown when the record is displayed as an item. This is typically longer than a label." ;
            sh:maxCount 1 ;
            sh:name "Record display note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:note ],
        [ sh:datatype xsd:string ;
            sh:description "Name of the subject." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:name "Name" ;
            sh:nodeKind sh:Literal ;
            sh:order 1 ;
            sh:path dldemoed:name ],
        [ sh:class dldemoed:XYZPerson ;
            sh:description "Person(s) that are formal or informal leaders of the subject." ;
            sh:name "Leader(s)" ;
            sh:nodeKind sh:IRI ;
            sh:order 4 ;
            sh:path dldemoed:leaders ],
        [ sh:class dlthings:Thing ;
            sh:description "Declares an unqualified relation of the subject `Thing` to another `Thing`. This schema slot is used to define related things inline. If such a definition is not needed. A qualified relationship can be declared directly using the `characterized_by` slot." ;
            sh:name "Relations" ;
            sh:nodeKind sh:IRI ;
            sh:order 6 ;
            sh:path dlthings:relation ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ;
            sh:name "Exact mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 7 ;
            sh:path skos:exactMatch ],
        [ sh:class dlflat:FlatAnnotation ;
            sh:description "A record of properties of the metadata record on a subject, a collection of tag/text tuples with the semantics of OWL Annotation." ;
            sh:name "Annotations" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 5 ;
            sh:path dlthings:annotations ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A comment about a metadata record either providing additional information for a record curation, or leaving a comment after curation occurred. This can be used to include information that is deemed relevant, but could not be expressed in the provided fields." ;
            sh:name "Editorial note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:editorialNote ],
        [ sh:class dlflat:FlatStatement ;
            sh:description "Qualifies relationships between a subject `Thing` and an object `Thing` with a `Statement` declaring a `predicate` on the nature of the relationship." ;
            sh:name "Is characterized by" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 2 ;
            sh:path dlthings:characterized_by ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A free-text account of the subject." ;
            sh:maxCount 1 ;
            sh:name "Description" ;
            sh:nodeKind sh:Literal ;
            sh:order 4 ;
            sh:path dlthings:description ] ;
    sh:targetClass dldemoed:XYZOrganization .

dldemoed:XYZProtocol a sh:NodeShape ;
    rdfs:label "Protocol" ;
    rdfs:comment "A plan specification which has sufficient level of detail and quantitative information to communicate it between investigation agents, so that different investigation agents will reliably be able to independently reproduce the process." ;
    sh:closed true ;
    sh:ignoredProperties ( rdf:type ) ;
    sh:property [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ;
            sh:name "Narrow mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 10 ;
            sh:path skos:narrowMatch ],
        [ sh:class dlthings:Thing ;
            sh:description "Declares an unqualified relation of the subject `Thing` to another `Thing`. This schema slot is used to define related things inline. If such a definition is not needed. A qualified relationship can be declared directly using the `characterized_by` slot." ;
            sh:name "Relations" ;
            sh:nodeKind sh:IRI ;
            sh:order 6 ;
            sh:path dlthings:relation ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ;
            sh:name "Broad mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 9 ;
            sh:path skos:broadMatch ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A free-text account of the subject." ;
            sh:maxCount 1 ;
            sh:name "Description" ;
            sh:nodeKind sh:Literal ;
            sh:order 3 ;
            sh:path dlthings:description ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ;
            sh:name "Exact mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 7 ;
            sh:path skos:exactMatch ],
        [ sh:datatype rdfs:Resource ;
            sh:description "State that the subject is an instance of a particular schema class. Typically, no explicit value needs to be assigned to this slot, because it matches the class type of a particular record. However, this slots can be used as a type designator of a schema element for validation and schema structure handling purposes. This is used to indicate specialized schema classes for properties that accept a hierarchy of classes as their range." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdf:type ],
        [ sh:class dlidentifiers:Identifier ;
            sh:description "An unambiguous reference to the subject within a given context." ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:path dlidentifiers:identifier ],
        [ sh:datatype xsd:string ;
            sh:description "A shortened name for the subject. For example, an acronym, initialism, nickname, or other abbreviation of the name or title." ;
            sh:maxCount 1 ;
            sh:name "Short name" ;
            sh:nodeKind sh:Literal ;
            sh:order 2 ;
            sh:path dldemoed:short_name ],
        [ sh:datatype xsd:string ;
            sh:description "Name of the subject." ;
            sh:maxCount 1 ;
            sh:name "Name" ;
            sh:nodeKind sh:Literal ;
            sh:order 1 ;
            sh:path dldemoed:name ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "Note that can be shown when the record is displayed as an item. This is typically longer than a label." ;
            sh:maxCount 1 ;
            sh:name "Record display note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:note ],
        [ sh:datatype xsd:string ;
            sh:description "Label that can be shown when the metadata record is displayed as an item." ;
            sh:maxCount 1 ;
            sh:name "Record display label" ;
            sh:nodeKind sh:Literal ;
            sh:order 4 ;
            sh:path skos:prefLabel ],
        [ sh:class dlflat:FlatAnnotation ;
            sh:description "A record of properties of the metadata record on a subject, a collection of tag/text tuples with the semantics of OWL Annotation." ;
            sh:name "Annotations" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 5 ;
            sh:path dlthings:annotations ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have related meaning." ;
            sh:name "Related mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 11 ;
            sh:path skos:relatedMatch ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A comment about a metadata record either providing additional information for a record curation, or leaving a comment after curation occurred. This can be used to include information that is deemed relevant, but could not be expressed in the provided fields." ;
            sh:name "Editorial note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:editorialNote ],
        [ sh:class dlflat:FlatStatement ;
            sh:description "Qualifies relationships between a subject `Thing` and an object `Thing` with a `Statement` declaring a `predicate` on the nature of the relationship." ;
            sh:name "Is characterized by" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 2 ;
            sh:path dlthings:characterized_by ],
        [ sh:class dlflat:FlatAttributeSpecification ;
            sh:description "Declares a relation that associates a `Thing` (or another attribute) with an attribute, where an attribute is an intrinsic characteristic, such as a quality, capability, disposition, function, or is an externally derived attribute determined from some descriptor (e.g. a quantity, position, label/identifier). Technically, this declaration is done via an `AttributeSpecification` that combines a `predicate` with a value declaration and the attribute-related slots of a `Thing`. Importantly, such attributes are declared inline, because they do not have a unique identifier. If an identifier is available, a `Thing` declaration (see `relation`), and a qualification of that relationship via a `Statement` (see `characterized_by`) should be preferred." ;
            sh:name "Attributes" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 3 ;
            sh:path dlthings:attributes ],
        [ sh:datatype xsd:anyURI ;
            sh:description "Persistent and globally unique identifier of a `Thing`." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:name "Persistent identifier" ;
            sh:nodeKind sh:Literal ;
            sh:order 1 ;
            sh:path dlthings:pid ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have close meaning." ;
            sh:name "Close mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 8 ;
            sh:path skos:closeMatch ] ;
    sh:targetClass dldemoed:XYZProtocol .

dldemoed:XYZStudy a sh:NodeShape ;
    rdfs:label "Study" ;
    rdfs:comment "A planned process that consists of parts: planning, study design execution, documentation and which produce conclusion(s)." ;
    sh:closed true ;
    sh:ignoredProperties ( rdf:type ) ;
    sh:property [ sh:class dldemoed:XYZInstrument ;
            sh:description "Instruments employed in a study activity. This could be physical devices, but also software tools." ;
            sh:name "Used instruments" ;
            sh:nodeKind sh:IRI ;
            sh:order 5 ;
            sh:path dldemoed:instruments ],
        [ sh:datatype rdfs:Resource ;
            sh:description "State that the subject is an instance of a particular schema class. Typically, no explicit value needs to be assigned to this slot, because it matches the class type of a particular record. However, this slots can be used as a type designator of a schema element for validation and schema structure handling purposes. This is used to indicate specialized schema classes for properties that accept a hierarchy of classes as their range." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdf:type ],
        [ sh:class dlidentifiers:Identifier ;
            sh:description "An unambiguous reference to the subject within a given context." ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:path dlidentifiers:identifier ],
        [ sh:class dldemoed:XYZProtocol ;
            sh:description "Protocols or standards that are relevant for the subject. For example particular standard operating procedures, data acquisition techniques, or organization standards." ;
            sh:name "Implemented protocols" ;
            sh:nodeKind sh:IRI ;
            sh:order 3 ;
            sh:path dldemoed:implements ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ;
            sh:name "Exact mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 7 ;
            sh:path skos:exactMatch ],
        [ sh:datatype xsd:string ;
            sh:description "Name of the subject." ;
            sh:maxCount 1 ;
            sh:name "Name" ;
            sh:nodeKind sh:Literal ;
            sh:order 1 ;
            sh:path dldemoed:name ],
        [ sh:class dlflat:FlatStatement ;
            sh:description "Qualifies relationships between a subject `Thing` and an object `Thing` with a `Statement` declaring a `predicate` on the nature of the relationship." ;
            sh:name "Is characterized by" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 2 ;
            sh:path dlthings:characterized_by ],
        [ sh:class dlflat:FlatAttributeSpecification ;
            sh:description "Declares a relation that associates a `Thing` (or another attribute) with an attribute, where an attribute is an intrinsic characteristic, such as a quality, capability, disposition, function, or is an externally derived attribute determined from some descriptor (e.g. a quantity, position, label/identifier). Technically, this declaration is done via an `AttributeSpecification` that combines a `predicate` with a value declaration and the attribute-related slots of a `Thing`. Importantly, such attributes are declared inline, because they do not have a unique identifier. If an identifier is available, a `Thing` declaration (see `relation`), and a qualification of that relationship via a `Statement` (see `characterized_by`) should be preferred." ;
            sh:name "Attributes" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 3 ;
            sh:path dlthings:attributes ],
        [ sh:class dlflat:FlatAnnotation ;
            sh:description "A record of properties of the metadata record on a subject, a collection of tag/text tuples with the semantics of OWL Annotation." ;
            sh:name "Annotations" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 5 ;
            sh:path dlthings:annotations ],
        [ sh:datatype xsd:string ;
            sh:description "A shortened name for the subject. For example, an acronym, initialism, nickname, or other abbreviation of the name or title." ;
            sh:maxCount 1 ;
            sh:name "Short name" ;
            sh:nodeKind sh:Literal ;
            sh:order 2 ;
            sh:path dldemoed:short_name ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have related meaning." ;
            sh:name "Related mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 11 ;
            sh:path skos:relatedMatch ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ;
            sh:name "Narrow mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 10 ;
            sh:path skos:narrowMatch ],
        [ sh:datatype xsd:string ;
            sh:description "Label that can be shown when the metadata record is displayed as an item." ;
            sh:maxCount 1 ;
            sh:name "Record display label" ;
            sh:nodeKind sh:Literal ;
            sh:order 8 ;
            sh:path skos:prefLabel ],
        [ sh:datatype xsd:anyURI ;
            sh:description "Persistent and globally unique identifier of a `Thing`." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:name "Persistent identifier" ;
            sh:nodeKind sh:Literal ;
            sh:order 1 ;
            sh:path dlthings:pid ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A comment about a metadata record either providing additional information for a record curation, or leaving a comment after curation occurred. This can be used to include information that is deemed relevant, but could not be expressed in the provided fields." ;
            sh:name "Editorial note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:editorialNote ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have close meaning." ;
            sh:name "Close mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 8 ;
            sh:path skos:closeMatch ],
        [ sh:class dlthings:Thing ;
            sh:description "Declares an unqualified relation of the subject `Thing` to another `Thing`. This schema slot is used to define related things inline. If such a definition is not needed. A qualified relationship can be declared directly using the `characterized_by` slot." ;
            sh:name "Relations" ;
            sh:nodeKind sh:IRI ;
            sh:order 6 ;
            sh:path dlthings:relation ],
        [ sh:class dldemoed:XYZFactor ;
            sh:description "Factors that influence the subject matter." ;
            sh:name "Influencing factors" ;
            sh:nodeKind sh:IRI ;
            sh:order 4 ;
            sh:path dldemoed:factors ],
        [ sh:class dldemoed:XYZDimension ;
            sh:description "Associated outcome variables." ;
            sh:name "Outcomes variables" ;
            sh:nodeKind sh:IRI ;
            sh:order 6 ;
            sh:path dldemoed:dimensions ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A free-text account of the subject." ;
            sh:maxCount 1 ;
            sh:name "Description" ;
            sh:nodeKind sh:Literal ;
            sh:order 7 ;
            sh:path dlthings:description ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "Note that can be shown when the record is displayed as an item. This is typically longer than a label." ;
            sh:maxCount 1 ;
            sh:name "Record display note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:note ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ;
            sh:name "Broad mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 9 ;
            sh:path skos:broadMatch ] ;
    sh:targetClass dldemoed:XYZStudy .

dlflat:FlatProperty a sh:NodeShape ;
    rdfs:label "Property" ;
    rdfs:comment "An RDF property, a `Thing` used to define a `predicate`, for example in a `Statement`." ;
    sh:closed true ;
    sh:ignoredProperties ( rdf:type ) ;
    sh:property [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ;
            sh:name "Exact mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 7 ;
            sh:path skos:exactMatch ],
        [ sh:datatype xsd:anyURI ;
            sh:description "Persistent and globally unique identifier of a `Thing`." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:name "Persistent identifier" ;
            sh:nodeKind sh:Literal ;
            sh:order 1 ;
            sh:path dlthings:pid ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ;
            sh:name "Narrow mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 10 ;
            sh:path skos:narrowMatch ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A comment about a metadata record either providing additional information for a record curation, or leaving a comment after curation occurred. This can be used to include information that is deemed relevant, but could not be expressed in the provided fields." ;
            sh:name "Editorial note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:editorialNote ],
        [ sh:class dlthings:AttributeSpecification ;
            sh:description "Declares a relation that associates a `Thing` (or another attribute) with an attribute, where an attribute is an intrinsic characteristic, such as a quality, capability, disposition, function, or is an externally derived attribute determined from some descriptor (e.g. a quantity, position, label/identifier). Technically, this declaration is done via an `AttributeSpecification` that combines a `predicate` with a value declaration and the attribute-related slots of a `Thing`. Importantly, such attributes are declared inline, because they do not have a unique identifier. If an identifier is available, a `Thing` declaration (see `relation`), and a qualification of that relationship via a `Statement` (see `characterized_by`) should be preferred." ;
            sh:name "Attributes" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 3 ;
            sh:path dlthings:attributes ],
        [ sh:class dlthings:Annotation ;
            sh:description "A record of properties of the metadata record on a subject, a collection of tag/text tuples with the semantics of OWL Annotation." ;
            sh:name "Annotations" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 5 ;
            sh:path dlthings:annotations ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A free-text account of the subject." ;
            sh:maxCount 1 ;
            sh:name "Description" ;
            sh:nodeKind sh:Literal ;
            sh:order 4 ;
            sh:path dlthings:description ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have related meaning." ;
            sh:name "Related mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 11 ;
            sh:path skos:relatedMatch ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have close meaning." ;
            sh:name "Close mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 8 ;
            sh:path skos:closeMatch ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "Note that can be shown when the record is displayed as an item. This is typically longer than a label." ;
            sh:maxCount 1 ;
            sh:name "Record display note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:note ],
        [ sh:datatype xsd:string ;
            sh:description "Label that can be shown when the metadata record is displayed as an item." ;
            sh:maxCount 1 ;
            sh:name "Record display label" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:prefLabel ],
        [ sh:class dlthings:Statement ;
            sh:description "Qualifies relationships between a subject `Thing` and an object `Thing` with a `Statement` declaring a `predicate` on the nature of the relationship." ;
            sh:name "Is characterized by" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 2 ;
            sh:path dlthings:characterized_by ],
        [ sh:class dlthings:Thing ;
            sh:description "Declares an unqualified relation of the subject `Thing` to another `Thing`. This schema slot is used to define related things inline. If such a definition is not needed. A qualified relationship can be declared directly using the `characterized_by` slot." ;
            sh:name "Relations" ;
            sh:nodeKind sh:IRI ;
            sh:order 6 ;
            sh:path dlthings:relation ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ;
            sh:name "Broad mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 9 ;
            sh:path skos:broadMatch ],
        [ sh:datatype rdfs:Resource ;
            sh:description "State that the subject is an instance of a particular schema class. Typically, no explicit value needs to be assigned to this slot, because it matches the class type of a particular record. However, this slots can be used as a type designator of a schema element for validation and schema structure handling purposes. This is used to indicate specialized schema classes for properties that accept a hierarchy of classes as their range." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdf:type ] ;
    sh:targetClass dlflat:FlatProperty .

dlthings:Property a sh:NodeShape ;
    rdfs:comment "An RDF property, a `Thing` used to define a `predicate`, for example in a `Statement`." ;
    sh:closed true ;
    sh:ignoredProperties ( skos:editorialNote rdf:type skos:note skos:prefLabel ) ;
    sh:property [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ;
            sh:name "Exact mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 7 ;
            sh:path skos:exactMatch ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have related meaning." ;
            sh:name "Related mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 11 ;
            sh:path skos:relatedMatch ],
        [ sh:class dlthings:Thing ;
            sh:description "Declares an unqualified relation of the subject `Thing` to another `Thing`. This schema slot is used to define related things inline. If such a definition is not needed. A qualified relationship can be declared directly using the `characterized_by` slot." ;
            sh:name "Relations" ;
            sh:nodeKind sh:IRI ;
            sh:order 6 ;
            sh:path dlthings:relation ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A free-text account of the subject." ;
            sh:maxCount 1 ;
            sh:name "Description" ;
            sh:nodeKind sh:Literal ;
            sh:order 4 ;
            sh:path dlthings:description ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ;
            sh:name "Broad mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 9 ;
            sh:path skos:broadMatch ],
        [ sh:class dlthings:AttributeSpecification ;
            sh:description "Declares a relation that associates a `Thing` (or another attribute) with an attribute, where an attribute is an intrinsic characteristic, such as a quality, capability, disposition, function, or is an externally derived attribute determined from some descriptor (e.g. a quantity, position, label/identifier). Technically, this declaration is done via an `AttributeSpecification` that combines a `predicate` with a value declaration and the attribute-related slots of a `Thing`. Importantly, such attributes are declared inline, because they do not have a unique identifier. If an identifier is available, a `Thing` declaration (see `relation`), and a qualification of that relationship via a `Statement` (see `characterized_by`) should be preferred." ;
            sh:name "Attributes" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 3 ;
            sh:path dlthings:attributes ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have close meaning." ;
            sh:name "Close mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 8 ;
            sh:path skos:closeMatch ],
        [ sh:datatype rdfs:Resource ;
            sh:description "State that the subject is an instance of a particular schema class. Typically, no explicit value needs to be assigned to this slot, because it matches the class type of a particular record. However, this slots can be used as a type designator of a schema element for validation and schema structure handling purposes. This is used to indicate specialized schema classes for properties that accept a hierarchy of classes as their range." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdf:type ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ;
            sh:name "Narrow mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 10 ;
            sh:path skos:narrowMatch ],
        [ sh:datatype xsd:anyURI ;
            sh:description "Persistent and globally unique identifier of a `Thing`." ;
            sh:maxCount 1 ;
            sh:name "Persistent identifier" ;
            sh:nodeKind sh:Literal ;
            sh:order 1 ;
            sh:path dlthings:pid ],
        [ sh:class dlthings:Annotation ;
            sh:description "A record of properties of the metadata record on a subject, a collection of tag/text tuples with the semantics of OWL Annotation." ;
            sh:name "Annotations" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 5 ;
            sh:path dlthings:annotations ],
        [ sh:class dlthings:Statement ;
            sh:description "Qualifies relationships between a subject `Thing` and an object `Thing` with a `Statement` declaring a `predicate` on the nature of the relationship." ;
            sh:name "Is characterized by" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 2 ;
            sh:path dlthings:characterized_by ] ;
    sh:targetClass dlthings:Property .

dldemoed:XYZDataset a sh:NodeShape ;
    rdfs:label "Dataset" ;
    rdfs:comment "A collection of data, published or curated by a single agent. This is a conceptual entity. A single dataset might be available in more than one representation, with differing schematic layouts, formats, and serializations." ;
    sh:closed true ;
    sh:ignoredProperties ( rdf:type ) ;
    sh:property [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A free-text account of the subject." ;
            sh:maxCount 1 ;
            sh:name "Description" ;
            sh:nodeKind sh:Literal ;
            sh:order 5 ;
            sh:path dlthings:description ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ;
            sh:name "Exact mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 7 ;
            sh:path skos:exactMatch ],
        [ sh:class dldemoed:XYZDataset ;
            sh:description "The entity that the subject is a part of. A core relation that holds between a part and its whole." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:IRI ;
            sh:order 3 ;
            sh:path dldemoed:part_of ],
        [ sh:class dlflat:FlatStatement ;
            sh:description "Qualifies relationships between a subject `Thing` and an object `Thing` with a `Statement` declaring a `predicate` on the nature of the relationship." ;
            sh:name "Is characterized by" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 2 ;
            sh:path dlthings:characterized_by ],
        [ sh:datatype xsd:anyURI ;
            sh:description "Persistent and globally unique identifier of a `Thing`." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:name "Persistent identifier" ;
            sh:nodeKind sh:Literal ;
            sh:order 1 ;
            sh:path dlthings:pid ],
        [ sh:datatype xsd:string ;
            sh:description "Name of the subject." ;
            sh:maxCount 1 ;
            sh:name "Name" ;
            sh:nodeKind sh:Literal ;
            sh:order 1 ;
            sh:path dldemoed:name ],
        [ sh:datatype xsd:string ;
            sh:description "A shortened name for the subject. For example, an acronym, initialism, nickname, or other abbreviation of the name or title." ;
            sh:maxCount 1 ;
            sh:name "Short name" ;
            sh:nodeKind sh:Literal ;
            sh:order 2 ;
            sh:path dldemoed:short_name ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have close meaning." ;
            sh:name "Close mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 8 ;
            sh:path skos:closeMatch ],
        [ sh:class dlthings:Thing ;
            sh:description "Declares an unqualified relation of the subject `Thing` to another `Thing`. This schema slot is used to define related things inline. If such a definition is not needed. A qualified relationship can be declared directly using the `characterized_by` slot." ;
            sh:name "Relations" ;
            sh:nodeKind sh:IRI ;
            sh:order 6 ;
            sh:path dlthings:relation ],
        [ sh:class dldemoed:XYZStudyActivity ;
            sh:description "Identification of the process that led to the production of the subject entity." ;
            sh:maxCount 1 ;
            sh:name "Generated by" ;
            sh:nodeKind sh:IRI ;
            sh:order 6 ;
            sh:path dldemoed:generated_by ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "Note that can be shown when the record is displayed as an item. This is typically longer than a label." ;
            sh:maxCount 1 ;
            sh:name "Record display note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:note ],
        [ sh:class dldemoed:XYZDimension ;
            sh:description "Associated outcome variables." ;
            sh:name "Outcomes variables" ;
            sh:nodeKind sh:IRI ;
            sh:order 4 ;
            sh:path dldemoed:dimensions ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ;
            sh:name "Broad mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 9 ;
            sh:path skos:broadMatch ],
        [ sh:class dlflat:FlatAnnotation ;
            sh:description "A record of properties of the metadata record on a subject, a collection of tag/text tuples with the semantics of OWL Annotation." ;
            sh:name "Annotations" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 5 ;
            sh:path dlthings:annotations ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ;
            sh:name "Narrow mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 10 ;
            sh:path skos:narrowMatch ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A comment about a metadata record either providing additional information for a record curation, or leaving a comment after curation occurred. This can be used to include information that is deemed relevant, but could not be expressed in the provided fields." ;
            sh:name "Editorial note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:editorialNote ],
        [ sh:class dlflat:FlatAttributeSpecification ;
            sh:description "Declares a relation that associates a `Thing` (or another attribute) with an attribute, where an attribute is an intrinsic characteristic, such as a quality, capability, disposition, function, or is an externally derived attribute determined from some descriptor (e.g. a quantity, position, label/identifier). Technically, this declaration is done via an `AttributeSpecification` that combines a `predicate` with a value declaration and the attribute-related slots of a `Thing`. Importantly, such attributes are declared inline, because they do not have a unique identifier. If an identifier is available, a `Thing` declaration (see `relation`), and a qualification of that relationship via a `Statement` (see `characterized_by`) should be preferred." ;
            sh:name "Attributes" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 3 ;
            sh:path dlthings:attributes ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have related meaning." ;
            sh:name "Related mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 11 ;
            sh:path skos:relatedMatch ],
        [ sh:datatype xsd:string ;
            sh:description "Label that can be shown when the metadata record is displayed as an item." ;
            sh:maxCount 1 ;
            sh:name "Record display label" ;
            sh:nodeKind sh:Literal ;
            sh:order 7 ;
            sh:path skos:prefLabel ],
        [ sh:class dlidentifiers:Identifier ;
            sh:description "An unambiguous reference to the subject within a given context." ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:path dlidentifiers:identifier ],
        [ sh:datatype rdfs:Resource ;
            sh:description "State that the subject is an instance of a particular schema class. Typically, no explicit value needs to be assigned to this slot, because it matches the class type of a particular record. However, this slots can be used as a type designator of a schema element for validation and schema structure handling purposes. This is used to indicate specialized schema classes for properties that accept a hierarchy of classes as their range." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdf:type ] ;
    sh:targetClass dldemoed:XYZDataset .

dldemoed:XYZDimension a sh:NodeShape ;
    rdfs:label "Dimension" ;
    rdfs:comment "A dependent or outcome variable." ;
    sh:closed true ;
    sh:ignoredProperties ( rdf:type ) ;
    sh:property [ sh:datatype xsd:string ;
            sh:description "A shortened name for the subject. For example, an acronym, initialism, nickname, or other abbreviation of the name or title." ;
            sh:maxCount 1 ;
            sh:name "Short name" ;
            sh:nodeKind sh:Literal ;
            sh:order 2 ;
            sh:path dldemoed:short_name ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "Note that can be shown when the record is displayed as an item. This is typically longer than a label." ;
            sh:maxCount 1 ;
            sh:name "Record display note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:note ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A free-text account of the subject." ;
            sh:maxCount 1 ;
            sh:name "Description" ;
            sh:nodeKind sh:Literal ;
            sh:order 3 ;
            sh:path dlthings:description ],
        [ sh:class dlflat:FlatAttributeSpecification ;
            sh:description "Declares a relation that associates a `Thing` (or another attribute) with an attribute, where an attribute is an intrinsic characteristic, such as a quality, capability, disposition, function, or is an externally derived attribute determined from some descriptor (e.g. a quantity, position, label/identifier). Technically, this declaration is done via an `AttributeSpecification` that combines a `predicate` with a value declaration and the attribute-related slots of a `Thing`. Importantly, such attributes are declared inline, because they do not have a unique identifier. If an identifier is available, a `Thing` declaration (see `relation`), and a qualification of that relationship via a `Statement` (see `characterized_by`) should be preferred." ;
            sh:name "Attributes" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 3 ;
            sh:path dlthings:attributes ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ;
            sh:name "Narrow mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 10 ;
            sh:path skos:narrowMatch ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have related meaning." ;
            sh:name "Related mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 11 ;
            sh:path skos:relatedMatch ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A comment about a metadata record either providing additional information for a record curation, or leaving a comment after curation occurred. This can be used to include information that is deemed relevant, but could not be expressed in the provided fields." ;
            sh:name "Editorial note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:editorialNote ],
        [ sh:class dlidentifiers:Identifier ;
            sh:description "An unambiguous reference to the subject within a given context." ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:path dlidentifiers:identifier ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have close meaning." ;
            sh:name "Close mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 8 ;
            sh:path skos:closeMatch ],
        [ sh:datatype xsd:string ;
            sh:description "Label that can be shown when the metadata record is displayed as an item." ;
            sh:maxCount 1 ;
            sh:name "Record display label" ;
            sh:nodeKind sh:Literal ;
            sh:order 4 ;
            sh:path skos:prefLabel ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ;
            sh:name "Broad mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 9 ;
            sh:path skos:broadMatch ],
        [ sh:datatype xsd:anyURI ;
            sh:description "Persistent and globally unique identifier of a `Thing`." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:name "Persistent identifier" ;
            sh:nodeKind sh:Literal ;
            sh:order 1 ;
            sh:path dlthings:pid ],
        [ sh:class dlflat:FlatAnnotation ;
            sh:description "A record of properties of the metadata record on a subject, a collection of tag/text tuples with the semantics of OWL Annotation." ;
            sh:name "Annotations" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 5 ;
            sh:path dlthings:annotations ],
        [ sh:datatype xsd:string ;
            sh:description "Name of the subject." ;
            sh:maxCount 1 ;
            sh:name "Name" ;
            sh:nodeKind sh:Literal ;
            sh:order 1 ;
            sh:path dldemoed:name ],
        [ sh:class dlflat:FlatStatement ;
            sh:description "Qualifies relationships between a subject `Thing` and an object `Thing` with a `Statement` declaring a `predicate` on the nature of the relationship." ;
            sh:name "Is characterized by" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 2 ;
            sh:path dlthings:characterized_by ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ;
            sh:name "Exact mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 7 ;
            sh:path skos:exactMatch ],
        [ sh:class dlthings:Thing ;
            sh:description "Declares an unqualified relation of the subject `Thing` to another `Thing`. This schema slot is used to define related things inline. If such a definition is not needed. A qualified relationship can be declared directly using the `characterized_by` slot." ;
            sh:name "Relations" ;
            sh:nodeKind sh:IRI ;
            sh:order 6 ;
            sh:path dlthings:relation ],
        [ sh:datatype rdfs:Resource ;
            sh:description "State that the subject is an instance of a particular schema class. Typically, no explicit value needs to be assigned to this slot, because it matches the class type of a particular record. However, this slots can be used as a type designator of a schema element for validation and schema structure handling purposes. This is used to indicate specialized schema classes for properties that accept a hierarchy of classes as their range." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdf:type ] ;
    sh:targetClass dldemoed:XYZDimension .

dldemoed:XYZFactor a sh:NodeShape ;
    rdfs:label "Factor" ;
    rdfs:comment "A tag associated with a categorical, independent variable in a study design. Factors can have an investigative role (e.g., treatments), or have an organizational nature (e.g., site labels)." ;
    sh:closed true ;
    sh:ignoredProperties ( rdf:type ) ;
    sh:property [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "Note that can be shown when the record is displayed as an item. This is typically longer than a label." ;
            sh:maxCount 1 ;
            sh:name "Record display note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:note ],
        [ sh:class dldemoed:XYZFactor ;
            sh:description "A factor the subject is a (sub)level of." ;
            sh:maxCount 1 ;
            sh:name "Level of" ;
            sh:nodeKind sh:IRI ;
            sh:order 3 ;
            sh:path dldemoed:factor_level_of ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have close meaning." ;
            sh:name "Close mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 8 ;
            sh:path skos:closeMatch ],
        [ sh:class dlthings:Thing ;
            sh:description "Declares an unqualified relation of the subject `Thing` to another `Thing`. This schema slot is used to define related things inline. If such a definition is not needed. A qualified relationship can be declared directly using the `characterized_by` slot." ;
            sh:name "Relations" ;
            sh:nodeKind sh:IRI ;
            sh:order 6 ;
            sh:path dlthings:relation ],
        [ sh:datatype xsd:string ;
            sh:description "Name of the subject." ;
            sh:maxCount 1 ;
            sh:name "Name" ;
            sh:nodeKind sh:Literal ;
            sh:order 1 ;
            sh:path dldemoed:name ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ;
            sh:name "Narrow mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 10 ;
            sh:path skos:narrowMatch ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A comment about a metadata record either providing additional information for a record curation, or leaving a comment after curation occurred. This can be used to include information that is deemed relevant, but could not be expressed in the provided fields." ;
            sh:name "Editorial note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:editorialNote ],
        [ sh:datatype xsd:string ;
            sh:description "A shortened name for the subject. For example, an acronym, initialism, nickname, or other abbreviation of the name or title." ;
            sh:maxCount 1 ;
            sh:name "Short name" ;
            sh:nodeKind sh:Literal ;
            sh:order 2 ;
            sh:path dldemoed:short_name ],
        [ sh:class dlflat:FlatAnnotation ;
            sh:description "A record of properties of the metadata record on a subject, a collection of tag/text tuples with the semantics of OWL Annotation." ;
            sh:name "Annotations" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 5 ;
            sh:path dlthings:annotations ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ;
            sh:name "Broad mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 9 ;
            sh:path skos:broadMatch ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have related meaning." ;
            sh:name "Related mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 11 ;
            sh:path skos:relatedMatch ],
        [ sh:class dlidentifiers:Identifier ;
            sh:description "An unambiguous reference to the subject within a given context." ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:path dlidentifiers:identifier ],
        [ sh:datatype xsd:anyURI ;
            sh:description "Persistent and globally unique identifier of a `Thing`." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:name "Persistent identifier" ;
            sh:nodeKind sh:Literal ;
            sh:order 1 ;
            sh:path dlthings:pid ],
        [ sh:class dlflat:FlatAttributeSpecification ;
            sh:description "Declares a relation that associates a `Thing` (or another attribute) with an attribute, where an attribute is an intrinsic characteristic, such as a quality, capability, disposition, function, or is an externally derived attribute determined from some descriptor (e.g. a quantity, position, label/identifier). Technically, this declaration is done via an `AttributeSpecification` that combines a `predicate` with a value declaration and the attribute-related slots of a `Thing`. Importantly, such attributes are declared inline, because they do not have a unique identifier. If an identifier is available, a `Thing` declaration (see `relation`), and a qualification of that relationship via a `Statement` (see `characterized_by`) should be preferred." ;
            sh:name "Attributes" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 3 ;
            sh:path dlthings:attributes ],
        [ sh:datatype xsd:string ;
            sh:description "Label that can be shown when the metadata record is displayed as an item." ;
            sh:maxCount 1 ;
            sh:name "Record display label" ;
            sh:nodeKind sh:Literal ;
            sh:order 5 ;
            sh:path skos:prefLabel ],
        [ sh:class dlflat:FlatStatement ;
            sh:description "Qualifies relationships between a subject `Thing` and an object `Thing` with a `Statement` declaring a `predicate` on the nature of the relationship." ;
            sh:name "Is characterized by" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 2 ;
            sh:path dlthings:characterized_by ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A free-text account of the subject." ;
            sh:maxCount 1 ;
            sh:name "Description" ;
            sh:nodeKind sh:Literal ;
            sh:order 4 ;
            sh:path dlthings:description ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ;
            sh:name "Exact mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 7 ;
            sh:path skos:exactMatch ],
        [ sh:datatype rdfs:Resource ;
            sh:description "State that the subject is an instance of a particular schema class. Typically, no explicit value needs to be assigned to this slot, because it matches the class type of a particular record. However, this slots can be used as a type designator of a schema element for validation and schema structure handling purposes. This is used to indicate specialized schema classes for properties that accept a hierarchy of classes as their range." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdf:type ] ;
    sh:targetClass dldemoed:XYZFactor .

dldemoed:XYZStudyActivity a sh:NodeShape ;
    rdfs:label "StudyActivity" ;
    rdfs:comment "An activity in the context of a study, where one or more subjects are studied under the influence of certain factors, with one or more instruments, following a set of protocols" ;
    sh:closed true ;
    sh:ignoredProperties ( rdf:type ) ;
    sh:property [ sh:datatype xsd:anyURI ;
            sh:description "Persistent and globally unique identifier of a `Thing`." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:name "Persistent identifier" ;
            sh:nodeKind sh:Literal ;
            sh:order 1 ;
            sh:path dlthings:pid ],
        [ sh:class dldemoed:XYZStudyActivity ;
            sh:description "The entity that the subject is a part of. A core relation that holds between a part and its whole." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:IRI ;
            sh:order 6 ;
            sh:path dldemoed:part_of ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A comment about a metadata record either providing additional information for a record curation, or leaving a comment after curation occurred. This can be used to include information that is deemed relevant, but could not be expressed in the provided fields." ;
            sh:name "Editorial note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:editorialNote ],
        [ sh:class dldemoed:XYZStudy ;
            sh:description "The study in which the subject took place or existed." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:name "Study context" ;
            sh:nodeKind sh:IRI ;
            sh:order 1 ;
            sh:path dldemoed:study ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ;
            sh:name "Narrow mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 10 ;
            sh:path skos:narrowMatch ],
        [ sh:class dlthings:Thing ;
            sh:description "Declares an unqualified relation of the subject `Thing` to another `Thing`. This schema slot is used to define related things inline. If such a definition is not needed. A qualified relationship can be declared directly using the `characterized_by` slot." ;
            sh:name "Relations" ;
            sh:nodeKind sh:IRI ;
            sh:order 6 ;
            sh:path dlthings:relation ],
        [ sh:datatype xsd:string ;
            sh:description "Label that can be shown when the metadata record is displayed as an item." ;
            sh:maxCount 1 ;
            sh:name "Record display label" ;
            sh:nodeKind sh:Literal ;
            sh:order 8 ;
            sh:path skos:prefLabel ],
        [ sh:datatype rdfs:Resource ;
            sh:description "State that the subject is an instance of a particular schema class. Typically, no explicit value needs to be assigned to this slot, because it matches the class type of a particular record. However, this slots can be used as a type designator of a schema element for validation and schema structure handling purposes. This is used to indicate specialized schema classes for properties that accept a hierarchy of classes as their range." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdf:type ],
        [ sh:class dldemoed:XYZProtocol ;
            sh:description "Protocols or standards that are relevant for the subject. For example particular standard operating procedures, data acquisition techniques, or organization standards." ;
            sh:name "Implemented protocols" ;
            sh:nodeKind sh:IRI ;
            sh:order 3 ;
            sh:path dldemoed:implements ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have close meaning." ;
            sh:name "Close mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 8 ;
            sh:path skos:closeMatch ],
        [ sh:class dlflat:FlatAnnotation ;
            sh:description "A record of properties of the metadata record on a subject, a collection of tag/text tuples with the semantics of OWL Annotation." ;
            sh:name "Annotations" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 5 ;
            sh:path dlthings:annotations ],
        [ sh:class dldemoed:XYZInstrument ;
            sh:description "Instruments employed in a study activity. This could be physical devices, but also software tools." ;
            sh:name "Used instruments" ;
            sh:nodeKind sh:IRI ;
            sh:order 5 ;
            sh:path dldemoed:instruments ],
        [ sh:class dldemoed:XYZFactor ;
            sh:description "Factors that influence the subject matter." ;
            sh:name "Influencing factors" ;
            sh:nodeKind sh:IRI ;
            sh:order 4 ;
            sh:path dldemoed:factors ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ;
            sh:name "Broad mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 9 ;
            sh:path skos:broadMatch ],
        [ sh:class dlidentifiers:Identifier ;
            sh:description "An unambiguous reference to the subject within a given context." ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:path dlidentifiers:identifier ],
        [ sh:class dlflat:FlatStatement ;
            sh:description "Qualifies relationships between a subject `Thing` and an object `Thing` with a `Statement` declaring a `predicate` on the nature of the relationship." ;
            sh:name "Is characterized by" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 2 ;
            sh:path dlthings:characterized_by ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "Note that can be shown when the record is displayed as an item. This is typically longer than a label." ;
            sh:maxCount 1 ;
            sh:name "Record display note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:note ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ;
            sh:name "Exact mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 7 ;
            sh:path skos:exactMatch ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have related meaning." ;
            sh:name "Related mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 11 ;
            sh:path skos:relatedMatch ],
        [ sh:class dlflat:FlatAttributeSpecification ;
            sh:description "Declares a relation that associates a `Thing` (or another attribute) with an attribute, where an attribute is an intrinsic characteristic, such as a quality, capability, disposition, function, or is an externally derived attribute determined from some descriptor (e.g. a quantity, position, label/identifier). Technically, this declaration is done via an `AttributeSpecification` that combines a `predicate` with a value declaration and the attribute-related slots of a `Thing`. Importantly, such attributes are declared inline, because they do not have a unique identifier. If an identifier is available, a `Thing` declaration (see `relation`), and a qualification of that relationship via a `Statement` (see `characterized_by`) should be preferred." ;
            sh:name "Attributes" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 3 ;
            sh:path dlthings:attributes ],
        [ sh:class dldemoed:XYZSubject ;
            sh:description "Studied subjects." ;
            sh:name "Studied subjects" ;
            sh:nodeKind sh:IRI ;
            sh:order 2 ;
            sh:path dldemoed:subjects ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A free-text account of the subject." ;
            sh:maxCount 1 ;
            sh:name "Description" ;
            sh:nodeKind sh:Literal ;
            sh:order 7 ;
            sh:path dlthings:description ] ;
    sh:targetClass dldemoed:XYZStudyActivity .

dldemoed:XYZSubject a sh:NodeShape ;
    rdfs:label "Subject" ;
    rdfs:comment "A subject is an entity being investigated in a study. This is a contextual entity. One and the same entity can be different subjects in two different studies." ;
    sh:closed true ;
    sh:ignoredProperties ( rdf:type ) ;
    sh:property [ sh:datatype rdfs:Resource ;
            sh:description "State that the subject is an instance of a particular schema class. Typically, no explicit value needs to be assigned to this slot, because it matches the class type of a particular record. However, this slots can be used as a type designator of a schema element for validation and schema structure handling purposes. This is used to indicate specialized schema classes for properties that accept a hierarchy of classes as their range." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdf:type ],
        [ sh:datatype xsd:string ;
            sh:description "Name of the subject." ;
            sh:maxCount 1 ;
            sh:name "Name" ;
            sh:nodeKind sh:Literal ;
            sh:order 2 ;
            sh:path dldemoed:name ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "Note that can be shown when the record is displayed as an item. This is typically longer than a label." ;
            sh:maxCount 1 ;
            sh:name "Record display note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:note ],
        [ sh:class dldemoed:XYZSubjectType ;
            sh:description "A classifier that identifies the nature/type of a subject. For specimen (a subject derived/taken from another subject), this classifier should be more precise than the classifier of the source subject." ;
            sh:maxCount 1 ;
            sh:name "Type" ;
            sh:nodeKind sh:IRI ;
            sh:order 3 ;
            sh:path dldemoed:subject_type ],
        [ sh:class dlflat:FlatAnnotation ;
            sh:description "A record of properties of the metadata record on a subject, a collection of tag/text tuples with the semantics of OWL Annotation." ;
            sh:name "Annotations" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 5 ;
            sh:path dlthings:annotations ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have close meaning." ;
            sh:name "Close mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 8 ;
            sh:path skos:closeMatch ],
        [ sh:datatype xsd:anyURI ;
            sh:description "Persistent and globally unique identifier of a `Thing`." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:name "Persistent identifier" ;
            sh:nodeKind sh:Literal ;
            sh:order 1 ;
            sh:path dlthings:pid ],
        [ sh:class dldemoed:XYZStudy ;
            sh:description "The study in which the subject took place or existed." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:name "Study context" ;
            sh:nodeKind sh:IRI ;
            sh:order 1 ;
            sh:path dldemoed:study ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ;
            sh:name "Exact mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 7 ;
            sh:path skos:exactMatch ],
        [ sh:datatype xsd:string ;
            sh:description "Label that can be shown when the metadata record is displayed as an item." ;
            sh:maxCount 1 ;
            sh:name "Record display label" ;
            sh:nodeKind sh:Literal ;
            sh:order 6 ;
            sh:path skos:prefLabel ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have related meaning." ;
            sh:name "Related mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 11 ;
            sh:path skos:relatedMatch ],
        [ sh:class dldemoed:XYZSubject ;
            sh:description "Source subject." ;
            sh:maxCount 1 ;
            sh:name "Specimen of" ;
            sh:nodeKind sh:IRI ;
            sh:order 4 ;
            sh:path dldemoed:derived_from ],
        [ sh:class dlthings:Thing ;
            sh:description "Declares an unqualified relation of the subject `Thing` to another `Thing`. This schema slot is used to define related things inline. If such a definition is not needed. A qualified relationship can be declared directly using the `characterized_by` slot." ;
            sh:name "Relations" ;
            sh:nodeKind sh:IRI ;
            sh:order 6 ;
            sh:path dlthings:relation ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ;
            sh:name "Broad mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 9 ;
            sh:path skos:broadMatch ],
        [ sh:class dlflat:FlatStatement ;
            sh:description "Qualifies relationships between a subject `Thing` and an object `Thing` with a `Statement` declaring a `predicate` on the nature of the relationship." ;
            sh:name "Is characterized by" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 2 ;
            sh:path dlthings:characterized_by ],
        [ sh:class dlflat:FlatAttributeSpecification ;
            sh:description "Declares a relation that associates a `Thing` (or another attribute) with an attribute, where an attribute is an intrinsic characteristic, such as a quality, capability, disposition, function, or is an externally derived attribute determined from some descriptor (e.g. a quantity, position, label/identifier). Technically, this declaration is done via an `AttributeSpecification` that combines a `predicate` with a value declaration and the attribute-related slots of a `Thing`. Importantly, such attributes are declared inline, because they do not have a unique identifier. If an identifier is available, a `Thing` declaration (see `relation`), and a qualification of that relationship via a `Statement` (see `characterized_by`) should be preferred." ;
            sh:name "Attributes" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 3 ;
            sh:path dlthings:attributes ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A free-text account of the subject." ;
            sh:maxCount 1 ;
            sh:name "Description" ;
            sh:nodeKind sh:Literal ;
            sh:order 5 ;
            sh:path dlthings:description ],
        [ sh:class dlidentifiers:Identifier ;
            sh:description "An unambiguous reference to the subject within a given context." ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:path dlidentifiers:identifier ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A comment about a metadata record either providing additional information for a record curation, or leaving a comment after curation occurred. This can be used to include information that is deemed relevant, but could not be expressed in the provided fields." ;
            sh:name "Editorial note" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:editorialNote ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ;
            sh:name "Narrow mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 10 ;
            sh:path skos:narrowMatch ] ;
    sh:targetClass dldemoed:XYZSubject .

dlthings:Annotation a sh:NodeShape ;
    rdfs:comment "A tag/value pair with the semantics of OWL Annotation." ;
    sh:closed true ;
    sh:ignoredProperties ( rdf:type ) ;
    sh:property [ sh:class dlthings:Thing ;
            sh:description "A tag identifying an annotation." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:IRI ;
            sh:path dlthings:annotation_tag ],
        [ sh:datatype xsd:string ;
            sh:description "The actual annotation." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path dlthings:annotation_value ] ;
    sh:targetClass dlthings:Annotation .

dlthings:AttributeSpecification a sh:NodeShape ;
    rdfs:comment "An attribute is conceptually a thing, but it requires no dedicated identifier (`pid`). Instead, it is linked to a `Thing` via its `attributes` slot and declares a `predicate` on the nature of the relationship." ;
    sh:closed true ;
    sh:ignoredProperties ( rdf:type ) ;
    sh:property [ sh:datatype xsd:string ;
            sh:description "Value that is a direct representation of a thing." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdf:value ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have related meaning." ;
            sh:name "Related mappings" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:relatedMatch ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A free-text account of the subject." ;
            sh:maxCount 1 ;
            sh:name "Description" ;
            sh:nodeKind sh:Literal ;
            sh:path dlthings:description ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ;
            sh:name "Broad mappings" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:broadMatch ],
        [ sh:class dlthings:AttributeSpecification ;
            sh:description "Declares a relation that associates a `Thing` (or another attribute) with an attribute, where an attribute is an intrinsic characteristic, such as a quality, capability, disposition, function, or is an externally derived attribute determined from some descriptor (e.g. a quantity, position, label/identifier). Technically, this declaration is done via an `AttributeSpecification` that combines a `predicate` with a value declaration and the attribute-related slots of a `Thing`. Importantly, such attributes are declared inline, because they do not have a unique identifier. If an identifier is available, a `Thing` declaration (see `relation`), and a qualification of that relationship via a `Statement` (see `characterized_by`) should be preferred." ;
            sh:name "Attributes" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:path dlthings:attributes ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have close meaning." ;
            sh:name "Close mappings" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:closeMatch ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ;
            sh:name "Narrow mappings" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:narrowMatch ],
        [ sh:datatype xsd:anyURI ;
            sh:description "Declares that the value of a `Thing` or `AttributeSpecification` are instances of a particular class." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdfs:range ],
        [ sh:datatype rdfs:Resource ;
            sh:description "State that the subject is an instance of a particular schema class. Typically, no explicit value needs to be assigned to this slot, because it matches the class type of a particular record. However, this slots can be used as a type designator of a schema element for validation and schema structure handling purposes. This is used to indicate specialized schema classes for properties that accept a hierarchy of classes as their range." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdf:type ],
        [ sh:class dlthings:Statement ;
            sh:description "Qualifies relationships between a subject `Thing` and an object `Thing` with a `Statement` declaring a `predicate` on the nature of the relationship." ;
            sh:name "Is characterized by" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:path dlthings:characterized_by ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ;
            sh:name "Exact mappings" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:exactMatch ],
        [ sh:class dlthings:Annotation ;
            sh:description "A record of properties of the metadata record on a subject, a collection of tag/text tuples with the semantics of OWL Annotation." ;
            sh:name "Annotations" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:path dlthings:annotations ],
        [ sh:class dlthings:Property ;
            sh:description "Reference to a `Property` within a `Statement`." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:nodeKind sh:IRI ;
            sh:path rdf:predicate ] ;
    sh:targetClass dlthings:AttributeSpecification .

dlthings:Statement a sh:NodeShape ;
    rdfs:comment "An RDF statement that links a `predicate` (a `Property`) with an `object` (a `Thing`) to the subject to form a triple. A `Statement` is used to qualify a relation to a `Thing` referenced by its identifier. For specifying a qualified relation to an attribute that has no dedicated identifier, use an `AttributeSpecification`." ;
    sh:closed true ;
    sh:ignoredProperties ( rdf:type ) ;
    sh:property [ sh:class dlthings:Thing ;
            sh:description "Reference to a `Thing` within a `Statement`." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:nodeKind sh:IRI ;
            sh:path rdf:object ],
        [ sh:class dlthings:Property ;
            sh:description "Reference to a `Property` within a `Statement`." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:nodeKind sh:IRI ;
            sh:path rdf:predicate ] ;
    sh:targetClass dlthings:Statement .

dlflat:FlatAnnotation a sh:NodeShape ;
    rdfs:label "Annotation" ;
    rdfs:comment "A tag/value pair with the semantics of OWL Annotation." ;
    sh:closed true ;
    sh:ignoredProperties ( rdf:type ) ;
    sh:property [ sh:class dlflat:AnnotationTag ;
            sh:description "A tag identifying an annotation." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:IRI ;
            sh:path dlthings:annotation_tag ],
        [ sh:datatype xsd:string ;
            sh:description "The actual annotation." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path dlthings:annotation_value ] ;
    sh:targetClass dlflat:FlatAnnotation .

dlflat:FlatAttributeSpecification a sh:NodeShape ;
    rdfs:label "Attribute" ;
    rdfs:comment "An attribute is conceptually a thing, but it requires no dedicated identifier (`pid`). Instead, it is linked to a `Thing` via its `attributes` slot and declares a `predicate` on the nature of the relationship." ;
    sh:closed true ;
    sh:ignoredProperties ( rdf:type ) ;
    sh:property [ sh:datatype xsd:string ;
            sh:description "Value that is a direct representation of a thing." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdf:value ],
        [ sh:class dlthings:AttributeSpecification ;
            sh:description "Declares a relation that associates a `Thing` (or another attribute) with an attribute, where an attribute is an intrinsic characteristic, such as a quality, capability, disposition, function, or is an externally derived attribute determined from some descriptor (e.g. a quantity, position, label/identifier). Technically, this declaration is done via an `AttributeSpecification` that combines a `predicate` with a value declaration and the attribute-related slots of a `Thing`. Importantly, such attributes are declared inline, because they do not have a unique identifier. If an identifier is available, a `Thing` declaration (see `relation`), and a qualification of that relationship via a `Statement` (see `characterized_by`) should be preferred." ;
            sh:name "Attributes" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:path dlthings:attributes ],
        [ sh:class dlflat:FlatProperty ;
            sh:description "Reference to a `Property` within a `Statement`." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:nodeKind sh:IRI ;
            sh:path rdf:predicate ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have close meaning." ;
            sh:name "Close mappings" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:closeMatch ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ;
            sh:name "Narrow mappings" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:narrowMatch ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ;
            sh:name "Broad mappings" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:broadMatch ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A free-text account of the subject." ;
            sh:maxCount 1 ;
            sh:name "Description" ;
            sh:nodeKind sh:Literal ;
            sh:path dlthings:description ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have related meaning." ;
            sh:name "Related mappings" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:relatedMatch ],
        [ sh:datatype rdfs:Resource ;
            sh:description "State that the subject is an instance of a particular schema class. Typically, no explicit value needs to be assigned to this slot, because it matches the class type of a particular record. However, this slots can be used as a type designator of a schema element for validation and schema structure handling purposes. This is used to indicate specialized schema classes for properties that accept a hierarchy of classes as their range." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdf:type ],
        [ sh:datatype xsd:anyURI ;
            sh:description "Declares that the value of a `Thing` or `AttributeSpecification` are instances of a particular class." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdfs:range ],
        [ sh:class dlthings:Annotation ;
            sh:description "A record of properties of the metadata record on a subject, a collection of tag/text tuples with the semantics of OWL Annotation." ;
            sh:name "Annotations" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:path dlthings:annotations ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ;
            sh:name "Exact mappings" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:exactMatch ],
        [ sh:class dlthings:Statement ;
            sh:description "Qualifies relationships between a subject `Thing` and an object `Thing` with a `Statement` declaring a `predicate` on the nature of the relationship." ;
            sh:name "Is characterized by" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:path dlthings:characterized_by ] ;
    sh:targetClass dlflat:FlatAttributeSpecification .

dlflat:FlatStatement a sh:NodeShape ;
    rdfs:label "Statement" ;
    rdfs:comment "An RDF statement that links a `predicate` (a `Property`) with an `object` (a `Thing`) to the subject to form a triple. A `Statement` is used to qualify a relation to a `Thing` referenced by its identifier. For specifying a qualified relation to an attribute that has no dedicated identifier, use an `AttributeSpecification`." ;
    sh:closed true ;
    sh:ignoredProperties ( rdf:type ) ;
    sh:property [ sh:class dlthings:Thing ;
            sh:description "Reference to a `Thing` within a `Statement`." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:nodeKind sh:IRI ;
            sh:path rdf:object ],
        [ sh:class dlflat:FlatProperty ;
            sh:description "Reference to a `Property` within a `Statement`." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:nodeKind sh:IRI ;
            sh:path rdf:predicate ] ;
    sh:targetClass dlflat:FlatStatement .

dlidentifiers:Identifier a sh:NodeShape ;
    rdfs:comment "An identifier is a label that uniquely identifies an item in a particular context. Some identifiers are globally unique. All identifiers are unique within their individual scope." ;
    sh:closed true ;
    sh:ignoredProperties ( rdf:type dlidentifiers:schema_agency ) ;
    sh:property [ sh:datatype rdfs:Resource ;
            sh:description "State that the subject is an instance of a particular schema class. Typically, no explicit value needs to be assigned to this slot, because it matches the class type of a particular record. However, this slots can be used as a type designator of a schema element for validation and schema structure handling purposes. This is used to indicate specialized schema classes for properties that accept a hierarchy of classes as their range." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdf:type ],
        [ sh:datatype xsd:string ;
            sh:description "String of characters such as \"T58:5\" or \"30:4833\" used to uniquely identify a concept within the scope of a given concept scheme." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path dlidentifiers:notation ],
        [ sh:datatype xsd:anyURI ;
            sh:description "An agent responsible for making an entity." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path dlidentifiers:creator ] ;
    sh:targetClass dlidentifiers:Identifier .

dlthings:Thing a sh:NodeShape ;
    rdfs:comment "The most basic, identifiable item. In addition to the slots that are common between a `Thing` and an `AttributeSpecification` (see `ThingMixin`), two additional slots are provided. The `pid` slot takes the required identifier for a `Thing`. The `relation` slot allows for the inline specification of other `Thing` instances. Such a relation is unqualified (and symmetric), and should be further characterized via a `Statement` (see `characterized_by`). From a schema perspective, the `relation` slots allows for building self-contained, structured documents (e.g., a JSON object) with arbitrarily complex information on a `Thing`." ;
    sh:closed true ;
    sh:ignoredProperties ( dldemoed:subject_type dldemoed:factors dldemoed:distribution_of dldemoed:subjects dldemoed:media_type rdf:type dldemoed:checksums rdfs:range rdf:value dldemoed:honorific_name_prefix skos:editorialNote dldemoed:emails dldemoed:honorific_name_suffix dldemoed:unit dldemoed:instruments dldemoed:orcid dldemoed:derived_from dlidentifiers:identifier dldemoed:generated_by dldemoed:family_name dldemoed:member_of dldemoed:part_of dldemoed:implements dldemoed:additional_names dldemoed:format dldemoed:dimensions dldemoed:short_name skos:note skos:prefLabel dldemoed:byte_size dldemoed:organization_type dldemoed:study dldemoed:name dldemoed:factor_level_of dldemoed:parent_organization dldemoed:leaders dldemoed:given_name ) ;
    sh:property [ sh:class dlthings:AttributeSpecification ;
            sh:description "Declares a relation that associates a `Thing` (or another attribute) with an attribute, where an attribute is an intrinsic characteristic, such as a quality, capability, disposition, function, or is an externally derived attribute determined from some descriptor (e.g. a quantity, position, label/identifier). Technically, this declaration is done via an `AttributeSpecification` that combines a `predicate` with a value declaration and the attribute-related slots of a `Thing`. Importantly, such attributes are declared inline, because they do not have a unique identifier. If an identifier is available, a `Thing` declaration (see `relation`), and a qualification of that relationship via a `Statement` (see `characterized_by`) should be preferred." ;
            sh:name "Attributes" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 3 ;
            sh:path dlthings:attributes ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have broader meaning." ;
            sh:name "Broad mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 9 ;
            sh:path skos:broadMatch ],
        [ sh:datatype xsd:anyURI ;
            sh:description "Persistent and globally unique identifier of a `Thing`." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:name "Persistent identifier" ;
            sh:nodeKind sh:Literal ;
            sh:order 1 ;
            sh:path dlthings:pid ],
        [ sh:datatype rdfs:Resource ;
            sh:description "State that the subject is an instance of a particular schema class. Typically, no explicit value needs to be assigned to this slot, because it matches the class type of a particular record. However, this slots can be used as a type designator of a schema element for validation and schema structure handling purposes. This is used to indicate specialized schema classes for properties that accept a hierarchy of classes as their range." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path rdf:type ],
        [ dash:singleLine false ;
            sh:datatype xsd:string ;
            sh:description "A free-text account of the subject." ;
            sh:maxCount 1 ;
            sh:name "Description" ;
            sh:nodeKind sh:Literal ;
            sh:order 4 ;
            sh:path dlthings:description ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have narrower meaning." ;
            sh:name "Narrow mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 10 ;
            sh:path skos:narrowMatch ],
        [ sh:class dlthings:Annotation ;
            sh:description "A record of properties of the metadata record on a subject, a collection of tag/text tuples with the semantics of OWL Annotation." ;
            sh:name "Annotations" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 5 ;
            sh:path dlthings:annotations ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have related meaning." ;
            sh:name "Related mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 11 ;
            sh:path skos:relatedMatch ],
        [ sh:class dlthings:Statement ;
            sh:description "Qualifies relationships between a subject `Thing` and an object `Thing` with a `Statement` declaring a `predicate` on the nature of the relationship." ;
            sh:name "Is characterized by" ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 2 ;
            sh:path dlthings:characterized_by ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have identical meaning." ;
            sh:name "Exact mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 7 ;
            sh:path skos:exactMatch ],
        [ sh:datatype xsd:anyURI ;
            sh:description "A list of terms from different schemas or terminology systems that have close meaning." ;
            sh:name "Close mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 8 ;
            sh:path skos:closeMatch ],
        [ sh:class dlthings:Thing ;
            sh:description "Declares an unqualified relation of the subject `Thing` to another `Thing`. This schema slot is used to define related things inline. If such a definition is not needed. A qualified relationship can be declared directly using the `characterized_by` slot." ;
            sh:name "Relations" ;
            sh:nodeKind sh:IRI ;
            sh:order 6 ;
            sh:path dlthings:relation ] ;
    sh:targetClass dlthings:Thing .

