@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix edu: <https://knobit.org/def/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

edu:LearningOutcomePrerequisitesAcyclicShape a sh:NodeShape ;
    rdfs:label "Learning outcome prerequisites have no cycles"@en,
        "Õpiväljundite eeldusseosed ei moodusta tsüklit"@et ;
    dcterms:license <https://creativecommons.org/licenses/by/4.0/> ;
    sh:sparql [ a sh:SPARQLConstraint ;
            sh:message "Learning outcome is its own direct or indirect prerequisite (hasPrerequisite / isPrerequisiteOf form a cycle)."@en,
                "Õpiväljund on iseenda otsene või kaudne eeldus (eeldusseosed moodustavad tsükli)."@et ;
            sh:prefixes edu:shapes ;
            sh:select """\r
            SELECT $this\r
            WHERE {\r
                $this (edu:hasPrerequisite|^edu:isPrerequisiteOf)+ $this .\r
            }\r
        """ ] ;
    sh:targetObjectsOf edu:isPrerequisiteOf ;
    sh:targetSubjectsOf edu:hasPrerequisite .

edu:hasPrerequisite rdfs:label "has prerequisite"@en,
        "Eeldab õpiväljundit"@et .

edu:isPrerequisiteOf rdfs:label "is prerequisite of"@en,
        "On eelduseks õpiväljundile"@et .

