@prefix dash: <http://datashapes.org/dash#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix dlcommonmx: <https://concepts.datalad.org/s/common-mixin/unreleased/> .
@prefix dlfilesmx: <https://concepts.datalad.org/s/files-mixin/unreleased/> .
@prefix dlflat: <https://concepts.datalad.org/s/flat/unreleased/> .
@prefix dlflatfiles: <https://concepts.datalad.org/s/flat-files/unreleased/> .
@prefix dlidentifiers: <https://concepts.datalad.org/s/identifiers/unreleased/> .
@prefix dlrelationsmx: <https://concepts.datalad.org/s/relations-mixin/unreleased/> .
@prefix dlschemas: <https://concepts.datalad.org/s/> .
@prefix dlspatialmx: <https://concepts.datalad.org/s/spatial-mixin/unreleased/> .
@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 fabio: <http://purl.org/spar/fabio/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix linkml: <https://w3id.org/linkml/> .
@prefix obo: <http://purl.obolibrary.org/obo/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix spdx: <http://spdx.org/rdf/terms#> .
@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 ( dlfilesmx:media_type dlrelationsmx:kind dlfilesmx:byte_size rdf:type dlflatfiles:checksums dlrelationsmx:parts dlfilesmx:distribution_of dlfilesmx:format ) ;
    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: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 ],
        [ 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 4 ;
            sh:path dlthings:description ],
        [ 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 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: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 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 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: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 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: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 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 "An agent responsible for making an entity." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path dlidentifiers:creator ],
        [ 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: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: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: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: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 "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 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: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 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 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 identical meaning." ;
            sh:name "Exact mappings" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:exactMatch ],
        [ 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: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 narrower meaning." ;
            sh:name "Narrow mappings" ;
            sh:nodeKind sh:Literal ;
            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:path dlthings:characterized_by ],
        [ 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:path dlthings:attributes ] ;
    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: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: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 "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 ],
        [ 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 "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: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: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: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 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 ] ;
    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 .

dlflatfiles:Distribution a sh:NodeShape ;
    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 [ 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 dlthings:Thing ;
            sh:description "The file format of a distribution." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:IRI ;
            sh:order 4 ;
            sh:path dlfilesmx:format ],
        [ 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 dlflatfiles:NamedDistributionPart ;
            sh:description "A related resource that is included either physically or logically in the described resource." ;
            sh:nodeKind sh:BlankNodeOrIRI ;
            sh:order 7 ;
            sh:path dlrelationsmx:parts ],
        [ 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 dlthings:Thing ;
            sh:description "The resource that the subject is a distribution of." ;
            sh:nodeKind sh:IRI ;
            sh:order 2 ;
            sh:path dlfilesmx:distribution_of ],
        [ 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 6 ;
            sh:path dlflatfiles:checksums ],
        [ 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 ],
        [ 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: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: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 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 "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 related meaning." ;
            sh:name "Related mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 11 ;
            sh:path skos:relatedMatch ],
        [ sh:class dlthings:Thing ;
            sh:description "The nature of the subject." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:IRI ;
            sh:order 1 ;
            sh:path dlrelationsmx:kind ],
        [ 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 5 ;
            sh:path dlfilesmx:media_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:nonNegativeInteger ;
            sh:description "The size of the subject in bytes." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:order 3 ;
            sh:path dlfilesmx:byte_size ],
        [ 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 "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:targetClass dlflatfiles:Distribution .

dlflatfiles:NamedDistributionPart a sh:NodeShape ;
    rdfs:comment "An association class for attaching a `locator` as additional information to a `hasPart` relationship." ;
    sh:closed true ;
    sh:ignoredProperties ( rdf:type ) ;
    sh:property [ sh:class dlflatfiles:Distribution ;
            sh:description "Reference to a `Thing` within a `Statement`." ;
            sh:maxCount 1 ;
            sh:minCount 1 ;
            sh:nodeKind sh:IRI ;
            sh:path rdf:object ],
        [ sh:datatype xsd:string ;
            sh:description "A relative path in POSIX notation." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path dlspatialmx:locator ;
            sh:pattern "^[^/]+.*$" ],
        [ sh:class dlthings:Thing ;
            sh:description "Describes the function of an entity or agent (object) within the scope of a relationship with the subject." ;
            sh:nodeKind sh:IRI ;
            sh:path dlrelationsmx:roles ] ;
    sh:targetClass dlflatfiles:NamedDistributionPart .

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 [ 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 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: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: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 ],
        [ 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 ],
        [ 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 related meaning." ;
            sh:name "Related mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 11 ;
            sh:path skos:relatedMatch ],
        [ 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 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 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 "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: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 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 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 "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 .

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 "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 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: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 ],
        [ 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 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: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: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 "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: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: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 skos:prefLabel rdf:type skos:note ) ;
    sh:property [ 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 close meaning." ;
            sh:name "Close mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 8 ;
            sh:path skos:closeMatch ],
        [ 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 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 "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: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 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 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 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: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:Property .

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:datatype xsd:string ;
            sh:description "The actual annotation." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path dlthings:annotation_value ],
        [ sh:class dlflat:AnnotationTag ;
            sh:description "A tag identifying an annotation." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:IRI ;
            sh:path dlthings:annotation_tag ] ;
    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: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 ],
        [ 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 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: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 related meaning." ;
            sh:name "Related mappings" ;
            sh:nodeKind sh:Literal ;
            sh:path skos:relatedMatch ],
        [ 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 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: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 ],
        [ 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: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 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: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: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 xsd:anyURI ;
            sh:description "An agent responsible for making an entity." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path dlidentifiers:creator ],
        [ 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 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:Identifier .

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:datatype xsd:string ;
            sh:description "The actual annotation." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:Literal ;
            sh:path dlthings:annotation_value ],
        [ sh:class dlthings:Thing ;
            sh:description "A tag identifying an annotation." ;
            sh:maxCount 1 ;
            sh:nodeKind sh:IRI ;
            sh:path dlthings:annotation_tag ] ;
    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: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: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 identical meaning." ;
            sh:name "Exact mappings" ;
            sh:nodeKind sh:Literal ;
            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:path skos:narrowMatch ],
        [ 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: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: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: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: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 ],
        [ 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: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: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: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:targetClass dlthings:Statement .

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 ( rdf:value dlidentifiers:identifier skos:note dlfilesmx:media_type skos:prefLabel dlrelationsmx:kind rdfs:range dlfilesmx:byte_size rdf:type dlflatfiles:checksums dlrelationsmx:parts dlfilesmx:distribution_of skos:editorialNote dlfilesmx:format ) ;
    sh:property [ 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: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 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 identical meaning." ;
            sh:name "Exact mappings" ;
            sh:nodeKind sh:Literal ;
            sh:order 7 ;
            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: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 ],
        [ 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 "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 ],
        [ 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 dlthings:Thing .

