##############################################################################
# fraternal SHACL shapes  —  v1.1.0   (use together with membership-shapes.ttl)
##############################################################################

@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl:     <http://www.w3.org/2002/07/owl#> .
@prefix xsd:     <http://www.w3.org/2001/XMLSchema#> .
@prefix sh:      <http://www.w3.org/ns/shacl#> .
@prefix skos:    <http://www.w3.org/2004/02/skos/core#> .
@prefix foaf:    <http://xmlns.com/foaf/0.1/> .
@prefix org:     <http://www.w3.org/ns/org#> .
@prefix mbr:    <https://w3id.org/membership#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix fraternal:    <https://w3id.org/fraternal#> .
@prefix fraternalsh:  <https://w3id.org/fraternal/shapes#> .
@prefix fraternalc:   <https://w3id.org/fraternal/code/> .
@prefix mbrsh:   <https://w3id.org/membership/shapes#> .
@prefix mbrc:    <https://w3id.org/membership/code/> .

<https://w3id.org/fraternal/shapes>
    a owl:Ontology ;
    owl:versionInfo "1.1.0" ;
    rdfs:label "fraternal SHACL shapes"@en , "SHACL-regler för fraternal"@sv , "SHACL-Shapes für fraternal"@de , "Shapes SHACL pour fraternal"@fr , "Shape SHACL per fraternal"@it , "Formas SHACL de fraternal"@es , "Formas SHACL de fraternal (regras de validação)"@pt , "A fraternal SHACL-szabályai"@hu , "Κανόνες SHACL για το fraternal"@el , "SHACL-regels voor fraternal"@nl ;
    dcterms:license <https://creativecommons.org/licenses/by/4.0/> ;
    dcterms:creator <https://orcid.org/0009-0002-6239-5346> ;
    dcterms:rightsHolder <https://orcid.org/0009-0002-6239-5346> ;
    dcterms:publisher <https://github.com/society-ontologies> ;
    sh:declare [ sh:prefix "fraternal" ; sh:namespace "https://w3id.org/fraternal#"^^xsd:anyURI ] ,
               [ sh:prefix "skos" ; sh:namespace "http://www.w3.org/2004/02/skos/core#"^^xsd:anyURI ] .

<https://orcid.org/0009-0002-6239-5346> foaf:name "Oscar Almgren" .

<https://github.com/society-ontologies> a foaf:Organization ;
    foaf:name "Society Ontologies" .

##############################################################################
# Codelist values
#
# Same rule as in membership-shapes.ttl: a value is a concept in the scheme for
# its property, or a local concept with a direct skos:exactMatch, skos:closeMatch
# or skos:broadMatch to a concept in that scheme. A third way in: a concept in a
# scheme that says dcterms:isPartOf the scheme for the property. That is how a
# tradition scheme (the Studentenverbindung principles, the Masonic rites) is part
# of the hub scheme without its concepts being in it, and without a mapping where
# the hub has no counterpart.
##############################################################################

fraternalsh:MemberTitleValue a sh:NodeShape ;
    sh:or ( [ sh:path skos:inScheme ; sh:hasValue fraternalc:MemberTitles ]
            [ sh:path ( [ sh:alternativePath ( skos:exactMatch skos:closeMatch skos:broadMatch ) ] skos:inScheme ) ; sh:hasValue fraternalc:MemberTitles ]
            [ sh:path ( skos:inScheme dcterms:isPartOf ) ; sh:hasValue fraternalc:MemberTitles ] ) .

fraternalsh:CharacteristicValue a sh:NodeShape ;
    sh:or ( [ sh:path skos:inScheme ; sh:hasValue fraternalc:Characteristics ]
            [ sh:path ( [ sh:alternativePath ( skos:exactMatch skos:closeMatch skos:broadMatch ) ] skos:inScheme ) ; sh:hasValue fraternalc:Characteristics ]
            [ sh:path ( skos:inScheme dcterms:isPartOf ) ; sh:hasValue fraternalc:Characteristics ] ) .

fraternalsh:DegreeKindValue a sh:NodeShape ;
    sh:or ( [ sh:path skos:inScheme ; sh:hasValue fraternalc:DegreeKinds ]
            [ sh:path ( [ sh:alternativePath ( skos:exactMatch skos:closeMatch skos:broadMatch ) ] skos:inScheme ) ; sh:hasValue fraternalc:DegreeKinds ]
            [ sh:path ( skos:inScheme dcterms:isPartOf ) ; sh:hasValue fraternalc:DegreeKinds ] ) .

fraternalsh:InsigniaTypeValue a sh:NodeShape ;
    sh:or ( [ sh:path skos:inScheme ; sh:hasValue fraternalc:InsigniaTypes ]
            [ sh:path ( [ sh:alternativePath ( skos:exactMatch skos:closeMatch skos:broadMatch ) ] skos:inScheme ) ; sh:hasValue fraternalc:InsigniaTypes ]
            [ sh:path ( skos:inScheme dcterms:isPartOf ) ; sh:hasValue fraternalc:InsigniaTypes ] ) .

fraternalsh:AssessmentOutcomeValue a sh:NodeShape ;
    sh:or ( [ sh:path skos:inScheme ; sh:hasValue fraternalc:AssessmentOutcomes ]
            [ sh:path ( [ sh:alternativePath ( skos:exactMatch skos:closeMatch skos:broadMatch ) ] skos:inScheme ) ; sh:hasValue fraternalc:AssessmentOutcomes ]
            [ sh:path ( skos:inScheme dcterms:isPartOf ) ; sh:hasValue fraternalc:AssessmentOutcomes ] ) .

# The OWL range of fraternal:degreeRank is xsd:positiveInteger. A plain Turtle 3 is an
# xsd:integer with the same value, which the range also admits, so it passes when it is one or more.
fraternalsh:RankList
    sh:or ( [ sh:datatype xsd:positiveInteger ] [ sh:datatype xsd:integer ; sh:minInclusive 1 ] ) .

fraternalsh:DegreeShape a sh:NodeShape ;
    sh:targetClass fraternal:Degree ;
    sh:property [ sh:path skos:inScheme ; sh:minCount 1 ;
                  sh:qualifiedValueShape [ sh:class fraternal:DegreeSystem ] ;
                  sh:qualifiedMinCount 1 ;
                  sh:message "A degree must be in at least one fraternal:DegreeSystem. | En grad måste ingå i minst ett fraternal:DegreeSystem. | Un degré doit figurer dans au moins un fraternal:DegreeSystem. | Ein Grad muss in mindestens einem fraternal:DegreeSystem enthalten sein. | Un grado deve far parte di almeno un fraternal:DegreeSystem. | Un grado debe estar en al menos un fraternal:DegreeSystem. | Um grau tem de estar em pelo menos um fraternal:DegreeSystem. | Egy fokozatnak legalább egy fraternal:DegreeSystem-ben kell lennie. | Ένας βαθμός πρέπει να ανήκει σε τουλάχιστον ένα fraternal:DegreeSystem. | Een graad moet in ten minste één fraternal:DegreeSystem staan." ] ,
                [ sh:path fraternal:degreeRank ; sh:maxCount 1 ;
                  sh:node fraternalsh:RankList ;
                  sh:message "fraternal:degreeRank must be one positive integer (xsd:positiveInteger, or xsd:integer of one or more). | fraternal:degreeRank ska vara ett enda positivt heltal (xsd:positiveInteger, eller xsd:integer som är ett eller större). | fraternal:degreeRank doit être un seul entier positif (xsd:positiveInteger, ou xsd:integer supérieur ou égal à un). | fraternal:degreeRank muss eine einzelne positive ganze Zahl sein (xsd:positiveInteger oder xsd:integer von eins oder mehr). | fraternal:degreeRank deve essere un solo intero positivo (xsd:positiveInteger, o xsd:integer pari o superiore a uno). | fraternal:degreeRank debe ser un único entero positivo (xsd:positiveInteger, o xsd:integer igual o mayor que uno). | fraternal:degreeRank tem de ser um único inteiro positivo (xsd:positiveInteger, ou xsd:integer igual ou superior a um). | A fraternal:degreeRank értéke egyetlen pozitív egész szám kell legyen (xsd:positiveInteger, vagy egynél nem kisebb xsd:integer). | Το fraternal:degreeRank πρέπει να είναι ένας θετικός ακέραιος (xsd:positiveInteger, ή xsd:integer ένα ή μεγαλύτερο). | fraternal:degreeRank moet één positief geheel getal zijn (xsd:positiveInteger, of xsd:integer van een of meer)." ] ,
                [ sh:path fraternal:nextDegree ; sh:maxCount 1 ; sh:class fraternal:Degree ] ,
                [ sh:path fraternal:degreeKind ; sh:class skos:Concept ; sh:node fraternalsh:DegreeKindValue ;
                  sh:message "fraternal:degreeKind must be a concept in fraternalc:DegreeKinds, or one mapped to it. | fraternal:degreeKind ska vara ett begrepp i fraternalc:DegreeKinds, eller ett som är mappat dit. | fraternal:degreeKind doit être un concept de fraternalc:DegreeKinds, ou un concept qui y est associé. | fraternal:degreeKind muss ein Konzept aus fraternalc:DegreeKinds sein oder eines, das darauf abgebildet ist. | fraternal:degreeKind deve essere un concetto di fraternalc:DegreeKinds, o uno associato a esso. | fraternal:degreeKind debe ser un concepto de fraternalc:DegreeKinds, o uno asociado a él. | fraternal:degreeKind tem de ser um conceito de fraternalc:DegreeKinds, ou um associado a ele. | A fraternal:degreeKind értéke a fraternalc:DegreeKinds egy fogalma, vagy egy hozzárendelt fogalom kell legyen. | Το fraternal:degreeKind πρέπει να είναι έννοια του fraternalc:DegreeKinds, ή αντιστοιχισμένη σε αυτό. | fraternal:degreeKind moet een concept in fraternalc:DegreeKinds zijn, of een concept dat daarop is afgebeeld." ] ;
    sh:sparql [
        a sh:SPARQLConstraint ;
        sh:message "The next degree must be in the same degree system and have rank one higher. | Nästa grad måste ingå i samma gradsystem och ha ett gradnummer som är ett högre. | Le degré suivant doit figurer dans le même système de degrés et avoir un rang supérieur d'une unité. | Der nächste Grad muss im selben Gradsystem sein und einen um eins höheren Rang haben. | Il grado successivo deve far parte dello stesso sistema di gradi e avere una posizione superiore di uno. | El grado siguiente debe estar en el mismo sistema de grados y tener un rango una unidad mayor. | O grau seguinte tem de estar no mesmo sistema de graus e ter uma posição uma unidade acima. | A következő fokozatnak ugyanabban a fokozatrendszerben kell lennie, és eggyel magasabb rangúnak. | Ο επόμενος βαθμός πρέπει να ανήκει στο ίδιο σύστημα βαθμών και να έχει σειρά κατά ένα μεγαλύτερη. | De volgende graad moet in hetzelfde gradenstelsel staan en een rang hoger hebben." ;
        sh:prefixes <https://w3id.org/fraternal/shapes> ;
        sh:select """
            SELECT $this ?next WHERE {
                $this fraternal:nextDegree ?next ;
                      fraternal:degreeRank ?r ;
                      skos:inScheme ?s .
                ?s a fraternal:DegreeSystem .
                FILTER NOT EXISTS { ?next skos:inScheme ?s ; fraternal:degreeRank ?rn2 .
                                    FILTER (?rn2 = ?r + 1) }
            }
        """
    ] .

# A degree is either in the numbered sequence (it has a rank) or of a stated
# kind outside it (honorary, office, side …).
fraternalsh:DegreeRankOrKindShape a sh:NodeShape ;
    sh:targetClass fraternal:Degree ;
    sh:or ( [ sh:path fraternal:degreeRank ; sh:minCount 1 ]
            [ sh:path fraternal:degreeKind ; sh:minCount 1 ] ) ;
    sh:message "A degree needs a fraternal:degreeRank, or a fraternal:degreeKind if it stands outside the numbered sequence. | En grad behöver ett fraternal:degreeRank, eller en fraternal:degreeKind om den står utanför den numrerade följden. | Un degré a besoin d'un fraternal:degreeRank, ou d'un fraternal:degreeKind s'il se tient hors de la suite numérotée. | Ein Grad braucht einen fraternal:degreeRank oder, wenn er außerhalb der nummerierten Folge steht, eine fraternal:degreeKind. | Un grado richiede un fraternal:degreeRank, o un fraternal:degreeKind se sta fuori dalla sequenza numerata. | Un grado necesita un fraternal:degreeRank, o un fraternal:degreeKind si queda fuera de la secuencia numerada. | Um grau precisa de um fraternal:degreeRank, ou de um fraternal:degreeKind se ficar fora da sequência numerada. | Egy fokozatnak fraternal:degreeRank értéke kell legyen, vagy fraternal:degreeKind, ha a számozott sorrenden kívül áll. | Ένας βαθμός χρειάζεται fraternal:degreeRank, ή fraternal:degreeKind αν βρίσκεται εκτός της αριθμημένης ακολουθίας. | Een graad heeft een fraternal:degreeRank nodig, of een fraternal:degreeKind als hij buiten de genummerde reeks staat." .

fraternalsh:DegreeConferralShape a sh:NodeShape ;
    sh:targetClass fraternal:DegreeConferral ;
    sh:property [ sh:path mbr:conferred ; sh:minCount 1 ; sh:maxCount 1 ; sh:class fraternal:Degree ;
                  sh:message "A degree conferral needs exactly one conferred fraternal:Degree. | En gradtilldelning behöver exakt en tilldelad fraternal:Degree. | Une attribution de degré a besoin d'exactement un fraternal:Degree conféré. | Eine Gradverleihung braucht genau einen verliehenen fraternal:Degree. | Un conferimento di grado richiede esattamente un fraternal:Degree conferito. | Una concesión de grado necesita exactamente un fraternal:Degree conferido. | Uma atribuição de grau precisa de exatamente um fraternal:Degree conferido. | Egy fokozat-adományozásnak pontosan egy odaítélt fraternal:Degree-je kell legyen. | Μια απονομή βαθμού χρειάζεται ακριβώς ένα fraternal:Degree που απονέμεται. | Een graadverlening heeft precies één verleende fraternal:Degree nodig." ] .

fraternalsh:FraternalOrderShape a sh:NodeShape ;
    sh:targetClass fraternal:FraternalOrder ;
    sh:property [ sh:path fraternal:degreeSystem ; sh:class fraternal:DegreeSystem ] ,
                [ sh:path fraternal:memberTitle ; sh:class skos:Concept ; sh:node fraternalsh:MemberTitleValue ;
                  sh:message "fraternal:memberTitle must be a concept in fraternalc:MemberTitles, or one mapped to it. | fraternal:memberTitle ska vara ett begrepp i fraternalc:MemberTitles, eller ett som är mappat dit. | fraternal:memberTitle doit être un concept de fraternalc:MemberTitles, ou un concept qui y est associé. | fraternal:memberTitle muss ein Konzept aus fraternalc:MemberTitles sein oder eines, das darauf abgebildet ist. | fraternal:memberTitle deve essere un concetto di fraternalc:MemberTitles, o uno associato a esso. | fraternal:memberTitle debe ser un concepto de fraternalc:MemberTitles, o uno asociado a él. | fraternal:memberTitle tem de ser um conceito de fraternalc:MemberTitles, ou um associado a ele. | A fraternal:memberTitle értéke a fraternalc:MemberTitles egy fogalma, vagy egy hozzárendelt fogalom kell legyen. | Το fraternal:memberTitle πρέπει να είναι έννοια του fraternalc:MemberTitles, ή αντιστοιχισμένη σε αυτό. | fraternal:memberTitle moet een concept in fraternalc:MemberTitles zijn, of een concept dat daarop is afgebeeld." ] ,
                [ sh:path fraternal:characteristic ; sh:class skos:Concept ; sh:node fraternalsh:CharacteristicValue ;
                  sh:message "fraternal:characteristic must be a concept in fraternalc:Characteristics, or one mapped to it. | fraternal:characteristic ska vara ett begrepp i fraternalc:Characteristics, eller ett som är mappat dit. | fraternal:characteristic doit être un concept de fraternalc:Characteristics, ou un concept qui y est associé. | fraternal:characteristic muss ein Konzept aus fraternalc:Characteristics sein oder eines, das darauf abgebildet ist. | fraternal:characteristic deve essere un concetto di fraternalc:Characteristics, o uno associato a esso. | fraternal:characteristic debe ser un concepto de fraternalc:Characteristics, o uno asociado a él. | fraternal:characteristic tem de ser um conceito de fraternalc:Characteristics, ou um associado a ele. | A fraternal:characteristic értéke a fraternalc:Characteristics egy fogalma, vagy egy hozzárendelt fogalom kell legyen. | Το fraternal:characteristic πρέπει να είναι έννοια του fraternalc:Characteristics, ή αντιστοιχισμένη σε αυτό. | fraternal:characteristic moet een concept in fraternalc:Characteristics zijn, of een concept dat daarop is afgebeeld." ] ,
                [ sh:path fraternal:recognizes ; sh:class org:Organization ] ,
                [ sh:path fraternal:inAmityWith ; sh:class org:Organization ] ,
                [ sh:path fraternal:fonsHonorum ; sh:class foaf:Agent ] .

# A lodge is a mbr:Branch, not a mbr:MembershipOrganization, so neither the organisation
# shape nor the fraternal order shape reach it. It carries its own rite, characteristics and recognition.
fraternalsh:LodgeShape a sh:NodeShape ;
    sh:targetClass fraternal:Lodge ;
    sh:property [ sh:path org:classification ; sh:class skos:Concept ; sh:node mbrsh:OrganizationTypeValue ;
                  sh:message "org:classification must be a concept in mbrc:OrganizationTypes, or one mapped to it. | org:classification ska vara ett begrepp i mbrc:OrganizationTypes, eller ett som är mappat dit. | org:classification doit être un concept de mbrc:OrganizationTypes, ou un concept qui y est associé. | org:classification muss ein Konzept aus mbrc:OrganizationTypes sein oder eines, das darauf abgebildet ist. | org:classification deve essere un concetto di mbrc:OrganizationTypes, o uno associato a esso. | org:classification debe ser un concepto de mbrc:OrganizationTypes, o uno asociado a él. | org:classification tem de ser um conceito de mbrc:OrganizationTypes, ou um associado a ele. | Az org:classification értéke az mbrc:OrganizationTypes egy fogalma, vagy egy hozzárendelt fogalom kell legyen. | Το org:classification πρέπει να είναι έννοια του mbrc:OrganizationTypes, ή αντιστοιχισμένη σε αυτό. | org:classification moet een concept in mbrc:OrganizationTypes zijn, of een concept dat daarop is afgebeeld." ] ,
                [ sh:path fraternal:characteristic ; sh:class skos:Concept ; sh:node fraternalsh:CharacteristicValue ;
                  sh:message "fraternal:characteristic must be a concept in fraternalc:Characteristics, or one mapped to it. | fraternal:characteristic ska vara ett begrepp i fraternalc:Characteristics, eller ett som är mappat dit. | fraternal:characteristic doit être un concept de fraternalc:Characteristics, ou un concept qui y est associé. | fraternal:characteristic muss ein Konzept aus fraternalc:Characteristics sein oder eines, das darauf abgebildet ist. | fraternal:characteristic deve essere un concetto di fraternalc:Characteristics, o uno associato a esso. | fraternal:characteristic debe ser un concepto de fraternalc:Characteristics, o uno asociado a él. | fraternal:characteristic tem de ser um conceito de fraternalc:Characteristics, ou um associado a ele. | A fraternal:characteristic értéke a fraternalc:Characteristics egy fogalma, vagy egy hozzárendelt fogalom kell legyen. | Το fraternal:characteristic πρέπει να είναι έννοια του fraternalc:Characteristics, ή αντιστοιχισμένη σε αυτό. | fraternal:characteristic moet een concept in fraternalc:Characteristics zijn, of een concept dat daarop is afgebeeld." ] ,
                [ sh:path fraternal:recognizes ; sh:class org:Organization ] ,
                [ sh:path fraternal:inAmityWith ; sh:class org:Organization ] ,
                [ sh:path fraternal:warrantedBy ; sh:class org:Organization ] .

fraternalsh:RecognitionTypeValue a sh:NodeShape ;
    sh:or ( [ sh:path skos:inScheme ; sh:hasValue fraternalc:RecognitionTypes ]
            [ sh:path ( [ sh:alternativePath ( skos:exactMatch skos:closeMatch skos:broadMatch ) ] skos:inScheme ) ; sh:hasValue fraternalc:RecognitionTypes ]
            [ sh:path ( skos:inScheme dcterms:isPartOf ) ; sh:hasValue fraternalc:RecognitionTypes ] ) .

fraternalsh:RecognitionShape a sh:NodeShape ;
    sh:targetClass fraternal:Recognition ;
    sh:property [ sh:path fraternal:recognizingBody ; sh:minCount 1 ; sh:maxCount 1 ; sh:class org:Organization ;
                  sh:disjoint fraternal:recognizedBody ;
                  sh:message "A recognition needs exactly one recognising body (fraternal:recognizingBody), and it cannot be the body that is recognised. | Ett erkännande behöver exakt ett erkännande organ (fraternal:recognizingBody), och det kan inte vara det organ som erkänns. | Une reconnaissance a besoin d'exactement un organe qui reconnaît (fraternal:recognizingBody), et ce ne peut pas être l'organe reconnu. | Eine Anerkennung braucht genau ein anerkennendes Organ (fraternal:recognizingBody), und es darf nicht das anerkannte Organ sein. | Un riconoscimento richiede esattamente un organismo che riconosce (fraternal:recognizingBody), e non può essere l'organismo riconosciuto. | Un reconocimiento necesita exactamente un organismo que reconoce (fraternal:recognizingBody), y no puede ser el organismo reconocido. | Um reconhecimento precisa de exatamente um organismo que reconhece (fraternal:recognizingBody), e este não pode ser o organismo reconhecido. | Egy elismerésnek pontosan egy elismerő testülete kell legyen (fraternal:recognizingBody), és az nem lehet az elismert testület. | Μια αναγνώριση χρειάζεται ακριβώς ένα σώμα που αναγνωρίζει (fraternal:recognizingBody), και αυτό δεν μπορεί να είναι το σώμα που αναγνωρίζεται. | Een erkenning heeft precies één erkennend lichaam nodig (fraternal:recognizingBody), en dat kan niet het erkende lichaam zijn." ] ,
                [ sh:path fraternal:recognizedBody ; sh:minCount 1 ; sh:maxCount 1 ; sh:class org:Organization ;
                  sh:message "A recognition needs exactly one recognised body (fraternal:recognizedBody). | Ett erkännande behöver exakt ett erkänt organ (fraternal:recognizedBody). | Une reconnaissance a besoin d'exactement un organe reconnu (fraternal:recognizedBody). | Eine Anerkennung braucht genau ein anerkanntes Organ (fraternal:recognizedBody). | Un riconoscimento richiede esattamente un organismo riconosciuto (fraternal:recognizedBody). | Un reconocimiento necesita exactamente un organismo reconocido (fraternal:recognizedBody). | Um reconhecimento precisa de exatamente um organismo reconhecido (fraternal:recognizedBody). | Egy elismerésnek pontosan egy elismert testülete kell legyen (fraternal:recognizedBody). | Μια αναγνώριση χρειάζεται ακριβώς ένα σώμα που αναγνωρίζεται (fraternal:recognizedBody). | Een erkenning heeft precies één erkend lichaam nodig (fraternal:recognizedBody)." ] ,
                [ sh:path fraternal:recognitionType ; sh:minCount 1 ; sh:maxCount 1 ; sh:class skos:Concept ;
                  sh:node fraternalsh:RecognitionTypeValue ;
                  sh:message "fraternal:recognitionType must be exactly one concept in fraternalc:RecognitionTypes, or one mapped to it. | fraternal:recognitionType ska vara exakt ett begrepp i fraternalc:RecognitionTypes, eller ett som är mappat dit. | fraternal:recognitionType doit être exactement un concept de fraternalc:RecognitionTypes, ou un concept qui y est mis en correspondance. | fraternal:recognitionType muss genau ein Konzept in fraternalc:RecognitionTypes sein, oder eines, das darauf abgebildet ist. | fraternal:recognitionType deve essere esattamente un concetto di fraternalc:RecognitionTypes, o uno mappato su di esso. | fraternal:recognitionType debe ser exactamente un concepto de fraternalc:RecognitionTypes, o uno asociado a él. | fraternal:recognitionType tem de ser exatamente um conceito de fraternalc:RecognitionTypes, ou um associado a ele. | A fraternal:recognitionType értéke pontosan egy fogalom a fraternalc:RecognitionTypes-ból, vagy egy hozzárendelt fogalom kell legyen. | Το fraternal:recognitionType πρέπει να είναι ακριβώς μία έννοια του fraternalc:RecognitionTypes, ή αντιστοιχισμένη σε αυτό. | fraternal:recognitionType moet precies één concept in fraternalc:RecognitionTypes zijn, of een concept dat daarop is afgebeeld." ] ,
                [ sh:path mbr:startDate ; sh:minCount 1 ; sh:severity sh:Warning ;
                  sh:message "A recognition should say when it began (mbr:startDate). | Ett erkännande bör ange när det började (mbr:startDate). | Une reconnaissance devrait indiquer quand elle a commencé (mbr:startDate). | Eine Anerkennung sollte angeben, wann sie begann (mbr:startDate). | Un riconoscimento dovrebbe indicare quando è iniziato (mbr:startDate). | Un reconocimiento debería indicar cuándo empezó (mbr:startDate). | Um reconhecimento deveria indicar quando começou (mbr:startDate). | Az elismerésnek jeleznie kellene, mikor kezdődött (mbr:startDate). | Μια αναγνώριση θα έπρεπε να λέει πότε άρχισε (mbr:startDate). | Een erkenning hoort te zeggen wanneer ze begon (mbr:startDate)." ] .

# Conditions of entry. The values are the bodies and degrees themselves.
fraternalsh:EntryRequirementShape a sh:NodeShape ;
    sh:targetSubjectsOf fraternal:requiresMembershipIn , fraternal:requiresDegree , fraternal:requiresRelationToMembersOf ;
    sh:property [ sh:path fraternal:requiresMembershipIn ; sh:class org:Organization ;
                  sh:message "fraternal:requiresMembershipIn must be an organisation. | fraternal:requiresMembershipIn ska vara en organisation. | fraternal:requiresMembershipIn doit être une organisation. | fraternal:requiresMembershipIn muss eine Organisation sein. | fraternal:requiresMembershipIn deve essere un'organizzazione. | fraternal:requiresMembershipIn debe ser una organización. | fraternal:requiresMembershipIn tem de ser uma organização. | A fraternal:requiresMembershipIn értéke szervezet kell legyen. | Το fraternal:requiresMembershipIn πρέπει να είναι οργάνωση. | fraternal:requiresMembershipIn moet een organisatie zijn." ] ,
                [ sh:path fraternal:requiresDegree ; sh:class fraternal:Degree ;
                  sh:message "fraternal:requiresDegree must be a fraternal:Degree. | fraternal:requiresDegree ska vara en fraternal:Degree. | fraternal:requiresDegree doit être un fraternal:Degree. | fraternal:requiresDegree muss ein fraternal:Degree sein. | fraternal:requiresDegree deve essere un fraternal:Degree. | fraternal:requiresDegree debe ser un fraternal:Degree. | fraternal:requiresDegree tem de ser um fraternal:Degree. | A fraternal:requiresDegree értéke fraternal:Degree kell legyen. | Το fraternal:requiresDegree πρέπει να είναι fraternal:Degree. | fraternal:requiresDegree moet een fraternal:Degree zijn." ] ,
                [ sh:path fraternal:requiresRelationToMembersOf ; sh:class org:Organization ;
                  sh:message "fraternal:requiresRelationToMembersOf must be an organisation. | fraternal:requiresRelationToMembersOf ska vara en organisation. | fraternal:requiresRelationToMembersOf doit être une organisation. | fraternal:requiresRelationToMembersOf muss eine Organisation sein. | fraternal:requiresRelationToMembersOf deve essere un'organizzazione. | fraternal:requiresRelationToMembersOf debe ser una organización. | fraternal:requiresRelationToMembersOf tem de ser uma organização. | A fraternal:requiresRelationToMembersOf értéke szervezet kell legyen. | Το fraternal:requiresRelationToMembersOf πρέπει να είναι οργάνωση. | fraternal:requiresRelationToMembersOf moet een organisatie zijn." ] .

fraternalsh:LegitimacyAssessmentShape a sh:NodeShape ;
    sh:targetClass fraternal:LegitimacyAssessment ;
    sh:property [ sh:path fraternal:assessedOrder ; sh:minCount 1 ; sh:maxCount 1 ; sh:class org:Organization ;
                  sh:message "An assessment needs exactly one assessed order. | En bedömning behöver exakt en bedömd orden. | Une évaluation a besoin d'exactement un ordre évalué. | Eine Beurteilung braucht genau einen beurteilten Orden. | Una valutazione richiede esattamente un ordine valutato. | Una evaluación necesita exactamente una orden evaluada. | Uma avaliação precisa de exatamente uma ordem avaliada. | Egy értékelésnek pontosan egy értékelt rendje kell legyen. | Μια αξιολόγηση χρειάζεται ακριβώς ένα τάγμα που αξιολογείται. | Een beoordeling heeft precies één beoordeelde orde nodig." ] ,
                [ sh:path fraternal:assessedBy ; sh:minCount 1 ; sh:class foaf:Agent ;
                  sh:message "An assessment needs the agent that made it (fraternal:assessedBy). | En bedömning behöver den agent som gjorde den (fraternal:assessedBy). | Une évaluation a besoin de l'agent qui l'a faite (fraternal:assessedBy). | Eine Beurteilung braucht den Akteur, der sie abgegeben hat (fraternal:assessedBy). | Una valutazione richiede l'agente che l'ha fatta (fraternal:assessedBy). | Una evaluación necesita el agente que la hizo (fraternal:assessedBy). | Uma avaliação precisa do agente que a fez (fraternal:assessedBy). | Egy értékeléshez szükség van az ágensre, aki végezte (fraternal:assessedBy). | Μια αξιολόγηση χρειάζεται τον παράγοντα που την έκανε (fraternal:assessedBy). | Een beoordeling heeft de agent nodig die haar uitvoerde (fraternal:assessedBy)." ] ,
                [ sh:path fraternal:assessmentOutcome ; sh:minCount 1 ; sh:maxCount 1 ; sh:class skos:Concept ;
                  sh:node fraternalsh:AssessmentOutcomeValue ;
                  sh:message "fraternal:assessmentOutcome must be a concept in fraternalc:AssessmentOutcomes, or one mapped to it. | fraternal:assessmentOutcome ska vara ett begrepp i fraternalc:AssessmentOutcomes, eller ett som är mappat dit. | fraternal:assessmentOutcome doit être un concept de fraternalc:AssessmentOutcomes, ou un concept qui y est associé. | fraternal:assessmentOutcome muss ein Konzept aus fraternalc:AssessmentOutcomes sein oder eines, das darauf abgebildet ist. | fraternal:assessmentOutcome deve essere un concetto di fraternalc:AssessmentOutcomes, o uno associato a esso. | fraternal:assessmentOutcome debe ser un concepto de fraternalc:AssessmentOutcomes, o uno asociado a él. | fraternal:assessmentOutcome tem de ser um conceito de fraternalc:AssessmentOutcomes, ou um associado a ele. | A fraternal:assessmentOutcome értéke a fraternalc:AssessmentOutcomes egy fogalma, vagy egy hozzárendelt fogalom kell legyen. | Το fraternal:assessmentOutcome πρέπει να είναι έννοια του fraternalc:AssessmentOutcomes, ή αντιστοιχισμένη σε αυτό. | fraternal:assessmentOutcome moet een concept in fraternalc:AssessmentOutcomes zijn, of een concept dat daarop is afgebeeld." ] ,
                [ sh:path mbr:startDate ; sh:minCount 1 ; sh:severity sh:Warning ] ,
                [ sh:path dcterms:source ; sh:minCount 1 ; sh:severity sh:Warning ] .

fraternalsh:InsigniaShape a sh:NodeShape ;
    sh:targetClass fraternal:Insignia ;
    sh:property [ sh:path fraternal:insigniaOf ; sh:minCount 1 ; sh:class skos:Concept ] ,
                [ sh:path fraternal:insigniaType ; sh:maxCount 1 ; sh:class skos:Concept ;
                  sh:node fraternalsh:InsigniaTypeValue ;
                  sh:message "fraternal:insigniaType must be a concept in fraternalc:InsigniaTypes, or one mapped to it. | fraternal:insigniaType ska vara ett begrepp i fraternalc:InsigniaTypes, eller ett som är mappat dit. | fraternal:insigniaType doit être un concept de fraternalc:InsigniaTypes, ou un concept qui y est associé. | fraternal:insigniaType muss ein Konzept aus fraternalc:InsigniaTypes sein oder eines, das darauf abgebildet ist. | fraternal:insigniaType deve essere un concetto di fraternalc:InsigniaTypes, o uno associato a esso. | fraternal:insigniaType debe ser un concepto de fraternalc:InsigniaTypes, o uno asociado a él. | fraternal:insigniaType tem de ser um conceito de fraternalc:InsigniaTypes, ou um associado a ele. | A fraternal:insigniaType értéke a fraternalc:InsigniaTypes egy fogalma, vagy egy hozzárendelt fogalom kell legyen. | Το fraternal:insigniaType πρέπει να είναι έννοια του fraternalc:InsigniaTypes, ή αντιστοιχισμένη σε αυτό. | fraternal:insigniaType moet een concept in fraternalc:InsigniaTypes zijn, of een concept dat daarop is afgebeeld." ] .
