@prefix ADMS: <http://www.w3.org/ns/adms#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix dlidentifiers: <https://concepts.datalad.org/s/identifiers/unreleased/> .
@prefix dlschemas: <https://concepts.datalad.org/s/> .
@prefix dltypes: <https://concepts.datalad.org/s/types/v1/> .
@prefix eunal: <http://publications.europa.eu/resource/authority/> .
@prefix ex: <http://example.org/> .
@prefix linkml: <https://w3id.org/linkml/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix spdx: <http://spdx.org/rdf/terms#> .


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: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: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:targetClass dlidentifiers:Checksum .

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 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: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: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 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:DOI .

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 ( dlidentifiers:schema_agency 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 "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 .

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: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 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:IssuedIdentifier .

