@prefix famrel: . @prefix my_datamodel: . @prefix rdf: . @prefix schema: . @prefix sh: . @prefix xsd: . my_datamodel:HasAliases a sh:NodeShape ; sh:closed true ; sh:description "A mixin applied to any class that can have aliases/alternateNames" ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:order 0 ; sh:path my_datamodel:aliases ] ; sh:targetClass my_datamodel:HasAliases . my_datamodel:NamedThing a sh:NodeShape ; sh:closed true ; sh:description "A generic grouping for any identifiable entity" ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:maxCount 1 ; sh:order 0 ; sh:path schema:identifier ], [ sh:maxCount 1 ; sh:order 1 ; sh:path schema:name ], [ sh:maxCount 1 ; sh:order 3 ; sh:path schema:image ], [ sh:maxCount 1 ; sh:order 2 ; sh:path schema:description ] ; sh:targetClass my_datamodel:NamedThing . my_datamodel:Registry a sh:NodeShape ; sh:closed true ; sh:description "Top level data container" ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:class schema:Person ; sh:nodeKind sh:IRI ; sh:order 0 ; sh:path my_datamodel:persons ], [ sh:class schema:Organization ; sh:nodeKind sh:IRI ; sh:order 1 ; sh:path my_datamodel:organizations ] ; sh:targetClass my_datamodel:Registry . my_datamodel:Relationship a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:maxCount 1 ; sh:order 0 ; sh:path ], [ sh:maxCount 1 ; sh:order 3 ; sh:path my_datamodel:type ], [ sh:maxCount 1 ; sh:order 2 ; sh:path my_datamodel:related_to ], [ sh:maxCount 1 ; sh:order 1 ; sh:path ] ; sh:targetClass my_datamodel:Relationship . schema:Organization a sh:NodeShape ; sh:closed true ; sh:description "An organization such as a company or university" ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:maxCount 1 ; sh:order 1 ; sh:path my_datamodel:founding_date ], [ sh:maxCount 1 ; sh:order 5 ; sh:path schema:description ], [ sh:order 2 ; sh:path my_datamodel:aliases ], [ sh:maxCount 1 ; sh:order 6 ; sh:path schema:image ], [ sh:maxCount 1 ; sh:order 0 ; sh:path my_datamodel:mission_statement ], [ sh:maxCount 1 ; sh:order 3 ; sh:path schema:identifier ], [ sh:maxCount 1 ; sh:order 4 ; sh:path schema:name ] ; sh:targetClass schema:Organization . schema:Person a sh:NodeShape ; sh:closed true ; sh:description "A person (alive, dead, undead, or fictional)." ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:maxCount 1 ; sh:order 6 ; sh:path schema:identifier ], [ sh:maxCount 1 ; sh:order 8 ; sh:path schema:description ], [ sh:maxCount 1 ; sh:order 9 ; sh:path schema:image ], [ sh:maxCount 1 ; sh:order 0 ; sh:path schema:email ; sh:pattern "^\\S+@[\\S+\\.]+\\S+" ], [ sh:maxCount 1 ; sh:maxInclusive 999 ; sh:minInclusive 0 ; sh:order 2 ; sh:path my_datamodel:age_in_years ], [ sh:class schema:PostalAddress ; sh:description "The address at which a person currently lives" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNode ; sh:order 3 ; sh:path my_datamodel:current_address ], [ sh:class my_datamodel:FamilialRelationship ; sh:nodeKind sh:BlankNode ; sh:order 4 ; sh:path my_datamodel:has_familial_relationships ], [ sh:maxCount 1 ; sh:order 1 ; sh:path schema:birthDate ], [ sh:maxCount 1 ; sh:order 7 ; sh:path schema:name ], [ sh:order 5 ; sh:path my_datamodel:aliases ] ; sh:targetClass schema:Person . schema:PostalAddress a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:maxCount 1 ; sh:order 1 ; sh:path my_datamodel:city ], [ sh:maxCount 1 ; sh:order 2 ; sh:path my_datamodel:postal_code ], [ sh:maxCount 1 ; sh:order 0 ; sh:path my_datamodel:street ] ; sh:targetClass schema:PostalAddress . my_datamodel:FamilialRelationship a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:maxCount 1 ; sh:order 1 ; sh:path ], [ sh:maxCount 1 ; sh:order 0 ; sh:path ], [ sh:in ( famrel:01 famrel:02 famrel:01 ) ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 3 ; sh:path my_datamodel:type ], [ sh:maxCount 1 ; sh:order 2 ; sh:path my_datamodel:related_to ] ; sh:targetClass my_datamodel:FamilialRelationship .