@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 - JournalBrand

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

    # Identity
    sh:property [
        sh:predicate sg:scigraphId ;
        sh:datatype xsd:string ; sh:minCount 1 ; sh:maxCount 1 ;
    ] ;
    sh:property [
        sh:predicate sg:ddsId ;
        sh:datatype xsd:string ; sh:maxCount 1 ;
        sh:pattern "^\\d+$" ;
    ] ;
    sh:property [
        sh:predicate sg:pcode ;
        sh:datatype xsd:string ; sh:maxCount 1 ;
        sh:pattern "^\\w[\\w-]+$" ;
    ] ;

    # Label
    sh:property [
        sh:predicate sg:language ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:predicate sg:title ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:predicate sg:shortTitle ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:predicate sg:subtitle ;
        sh:datatype xsd:string ;
    ] ;

    # Publisher
    sh:property [
        sh:predicate sg:imprint ;
        sh:datatype xsd:string ; sh:maxCount 1 ;
    ] ;
    sh:property [
        sh:predicate sg:publisher ;
        sh:datatype xsd:string ; sh:maxCount 1 ;
    ] ;
    sh:property [
        sh:predicate sg:copyrightHolder ;
        sh:datatype xsd:string ; sh:maxCount 1 ;
    ] ;
    sh:property [
        sh:predicate sg:webpage ;
        sh:nodeKind sh:IRI ;
    ] ;

    # Coverage
    sh:property [
        sh:predicate sg:titleAddedYear ;
        sh:datatype xsd:gYear ; sh:pattern "^\\d{4}$" ; sh:maxCount 1 ;
    ] ;
    sh:property [
        sh:predicate sg:startYear ;
        sh:datatype xsd:gYear ; sh:pattern "^\\d{4}$" ; sh:maxCount 1 ;
    ] ;
    sh:property [
        sh:predicate sg:endYear ;
        sh:datatype xsd:gYear ; sh:pattern "^\\d{4}$" ; sh:maxCount 1 ;
    ] ;
    sh:property [
        sh:predicate sg:volumeStart ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:predicate sg:volumeEnd ;
        sh:datatype xsd:string ;
    ] ;
    sh:property [
        sh:predicate sg:volumeCount ;
        sh:datatype xsd:integer ;
    ] ;

    # Description
    sh:property [
        sh:predicate sg:hasProductMarketCode ;
        sh:stem "http://www.springernature.com/scigraph/things/product-market-codes/" ;
    ] ;

    # Access
    sh:property [
        sh:predicate sg:openAccess ;
        sh:datatype xsd:string ; sh:maxCount 1 ;
    ] ;

    .

# shape - Journal

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

    # Identity
    sh:property [
        sh:predicate sg:scigraphId ;
        sh:datatype xsd:string ; sh:minCount 1 ; sh:maxCount 1 ;
    ] ;
    sh:property [
        sh:predicate sg:issn ;
        sh:datatype xsd:string ; sh:maxCount 1 ;
        sh:pattern "^\\d{4}-\\d{3}[\\dXx]$" ;
    ] ;
    sh:property [
        sh:predicate sg:doi ;
        sh:datatype xsd:string ; sh:maxCount 1 ;
        sh:pattern "^10\\.\\d{4,5}\\/\\S+$" ;
    ] ;

    # Reference
    sh:property [
        sh:predicate sg:hasJournalBrand ;
        sh:stem "http://www.springernature.com/scigraph/things/journal-brands/" ;
    ] ;

    # Format
    sh:property [
        sh:predicate sg:medium ;
        sh:datatype xsd:string ;
    ] ;

    # Access
    sh:property [
        sh:predicate sg:isActivePublication ;
        sh:datatype xsd:boolean ;
    ] ;

    # Historical
    sh:property [
        sh:predicate sg:isHistoricalJournal ;
        sh:datatype xsd:boolean ;
    ] ;
    .
