@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@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 sg: <http://www.springernature.com/scigraph/ontologies/core/> .
@prefix sgg: <http://www.springernature.com/scigraph/graphs/> .
@prefix sgo: <http://www.springernature.com/scigraph/ontologies/> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix vann: <http://purl.org/vocab/vann/> .
@prefix void: <http://rdfs.org/ns/void#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

@prefix shapes: <http://www.springernature.com/scigraph/shapes/> .

# shape - Subject

shapes:Subject
    a sh:Shape ;
    sh:targetClass sg:Subject ;
    rdfs:label "RDF shape for the sg:Subject model" ;
    # sh:closed true ;
    sh:ignoredProperties ( rdf:type ) ;

    # Identity
    sh:property [
        sh:predicate sg:id ;
        sh:datatype xsd:string ; sh:minCount 1 ; sh:maxCount 1 ;
    ] ;
    sh:property [
        sh:predicate sg:hash ;
        sh:datatype xsd:string ; sh:maxCount 1 ;
    ] ;
    sh:property [
        sh:predicate sg:code ;
        sh:datatype xsd:integer ; sh:maxCount 1 ;
    ] ;

    # Reference
    sh:property [
        sh:predicate sg:cabiCode ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:predicate sg:oldCode ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:predicate sg:oldLabel ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:predicate sg:related ;
        sh:stem "http://www.springernature.com/scigraph/things/subjects/" ;
    ] ;
    sh:property [
        sh:predicate sg:replacedBy ;
        sh:stem "http://www.springernature.com/scigraph/things/subjects/" ;
    ] ;
    sh:property [
        sh:predicate sg:replaces ;
        sh:stem "http://www.springernature.com/scigraph/things/subjects/" ;
    ] ;

    # Domain
    sh:property [
        sh:predicate sg:domain ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:predicate sg:hasDomain ;
        # sh:stem "http://www.springernature.com/scigraph/things/domains/" ;
        sh:stem "http://ns.nature.com/domains/" ;
    ] ;

    # Admin
    sh:property [
        sh:predicate sg:datetime ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:predicate sg:isManagedExternally ;
        sh:datatype xsd:boolean ;
    ] ;
    sh:property [
        sh:predicate sg:isPalgraveSubject ;
        sh:datatype xsd:boolean ;
    ] ;
    sh:property [
        sh:predicate sg:isPublishReady ;
        sh:datatype xsd:boolean ;
    ] ;

    # Curation
    sh:property [
        sh:predicate sg:email ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:predicate sg:name ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:predicate sg:submittedBy ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:predicate sg:subtypeLabel ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:predicate sg:typeLabel ;
        sh:datatype xsd:string ;
    ] ;

    # Webpage
    sh:property [
        sh:predicate sg:webpage ;
        sh:nodeKind sh:IRI ;
        sh:maxCount 1 ;
    ] ;

    .
