@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix bibo: <http://purl.org/ontology/bibo/> .
@prefix schema: <https://schema.org/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix fl: <https://momo54.github.io/fedlit/vocab#> .

fl:PaperShape a sh:NodeShape ;
  sh:targetClass schema:ScholarlyArticle ;
  sh:property [ sh:path dcterms:title ; sh:minCount 1 ; sh:maxCount 1 ; sh:datatype xsd:string ] ;
  sh:property [ sh:path dcterms:issued ; sh:minCount 1 ; sh:maxCount 1 ; sh:datatype xsd:gYear ] ;
  sh:property [ sh:path dcterms:creator ; sh:minCount 1 ; sh:class schema:Person ] ;
  sh:property [ sh:path bibo:authorList ; sh:minCount 1 ; sh:maxCount 1 ] ;
  sh:property [ sh:path fl:paperType ; sh:minCount 1 ; sh:maxCount 1 ; sh:class skos:Concept ] ;
  sh:property [ sh:path fl:venueLabel ; sh:minCount 1 ; sh:maxCount 1 ; sh:datatype xsd:string ] ;
  sh:property [ sh:path fl:foundBy ; sh:minCount 1 ; sh:maxCount 1 ; sh:class skos:Concept ] ;
  sh:property [ sh:path fl:category ; sh:minCount 1 ; sh:maxCount 1 ; sh:in ( <https://momo54.github.io/fedlit/category/core> <https://momo54.github.io/fedlit/category/related> ) ] ;
  sh:property [ sh:path fl:family ; sh:minCount 1 ; sh:maxCount 1 ; sh:class skos:Concept ] ;
  sh:property [ sh:path fl:problem ; sh:minCount 2 ; sh:uniqueLang true ; sh:languageIn ( "en" "fr" ) ] ;
  sh:property [ sh:path fl:motivatedByUnreliableServers ; sh:minCount 1 ; sh:maxCount 1 ; sh:datatype xsd:boolean ] ;
  sh:property [ sh:path fl:evidence ; sh:minCount 1 ; sh:maxCount 1 ; sh:class skos:Concept ] ;
  sh:property [ sh:path bibo:doi ; sh:maxCount 1 ; sh:pattern "^10\\." ] .

fl:PersonShape a sh:NodeShape ;
  sh:targetClass schema:Person ;
  sh:property [ sh:path schema:name ; sh:minCount 1 ] .

fl:ConceptShape a sh:NodeShape ;
  sh:targetClass skos:Concept ;
  sh:property [ sh:path skos:prefLabel ; sh:minCount 1 ; sh:uniqueLang true ] ;
  sh:property [ sh:path skos:inScheme ; sh:minCount 1 ] .
