diff --git a/shapes/profile-shape.ttl b/shapes/profile-shape.ttl new file mode 100644 index 0000000..e5577b5 --- /dev/null +++ b/shapes/profile-shape.ttl @@ -0,0 +1,108 @@ +PREFIX sh: +PREFIX dct: +PREFIX rdf: +PREFIX rdfs: +PREFIX solid: +PREFIX xsd: +PREFIX org: +PREFIX vcard: +PREFIX schema: +PREFIX foaf: +PREFIX : <#> + +:ProfileShape a sh:NodeShape; + dct:title "Profile shape"; + sh:property + [ + sh:datatype xsd:string; + sh:name "his/hers/theirs..."; + sh:path solid:preferredRelativePronoun ], + [ + sh:datatype xsd:string; + sh:name "him/her/them..."; + sh:path solid:preferredObjectPronoun ], + [ + sh:datatype xsd:string; + sh:name "he/she/they..."; + sh:path solid:preferredSubjectPronoun ], + [ + sh:name "Involvement with Organization"; + sh:node [ + a sh:NodeShape; + sh:property [ + sh:datatype xsd:string; + sh:name "Describe your role"; + sh:path schema:description ], + [ + sh:name "Organization"@en, + "Organization"@fr; + sh:path org:organization ], +[ + sh:datatype xsd:string; + sh:name "Occupation"@en; + sh:or ( [ sh:path org:role ] [ sh:path vcard:role ] ) ], + [ + sh:datatype xsd:string; + sh:path vcard:role ] ]; + sh:path [sh:inversePath org:member ] ], + [ + sh:name "Skills"; + sh:node [ + a sh:NodeShape; + sh:property [ + sh:name "skill"; + sh:path solid:publicId ] ]; + sh:path schema:skills ], + [ + sh:name "Languages"; + sh:path schema:knowsLanguage; + sh:property [ + sh:node [ + a sh:NodeShape; + sh:property [ + sh:node [ + a sh:NodeShape; + sh:property [ + sh:name "Language"; + sh:path solid:publicId ] ]; + sh:path ( + [ + sh:zeroOrMorePath rdf:rest ] + rdf:first ) ] ]; + sh:path schema:knowsLanguage; + sh:targetClass schema:Text, schema:Language, rdf:Collection ] ], + [ + sh:datatype xsd:string; + sh:name "Short name for chats, etc."@en, + "surnom"@fr; + sh:path foaf:nick ], + [ + sh:min 1; + sh:or ( +[ + sh:name "Set type"; + sh:path rdf:type; + sh:targetValue schema:Person +] +[ + sh:name "Set type"; + sh:path rdf:type; + sh:targetValue foaf:Person ] +[ + sh:name "Set type"; + sh:path rdf:type; + sh:targetValue vcard:Individual +])], + [ + sh:name "Friends"; + sh:path foaf:knows; + sh:class foaf:Person ]; + + sh:property [ + sh:name "Mugshots"; + sh:path vcard:hasPhoto; + sh:class dct:Image; + ]; + sh:targetClass schema:Person, + vcard:Individual, + foaf:Person .