1. Introduction
2. Data
All turtle and shapetree code snippets in this primer will assume following prefixes.
@ prefix xsd : <http://www.w3.org/2001/XMLSchema#> . @ prefix rdf : <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @ prefix rdfs : <http://www.w3.org/2000/01/rdf-schema#> . @ prefix dcterms : <http://purl.org/dc/terms/> . @ prefix solid : <http://www.w3.org/ns/solid/terms#> . @ prefix interop : <http://www.w3.org/ns/solid/interop#> . @ prefix solidshapes : <https://solidshapes.example/shapes/> . @ prefix solidtrees : <https://solidshapes.example/trees/> . @ prefix ex : <https://namespace.example/> . @ prefix acme : <https://acme.example/> . @ prefix alice : <https://alice.example/> . @ prefix bob : <https://bob.example/> .
All ShExC code snippets will asssume
PREFIX solidshapes : <https://solidshapes.example/shapes/> PREFIX ex : <https://namespace.example/>
2.1. solidshapes.example
2.1.1. Shapes
solidshapes : ProjectShape { a [ ex : Project ] }
solidshapes : TaskShape { a [ ex : Task ] ; ex : inProject IRI }
2.1.2. Shape Trees
solidtrees : Project a shapetree : ShapeTree ; shapetree : expectsType shapetree : ShapeTreeResource ; shapetree : validatedBy solidshapes : Project ; shapetree : reference [ shapetree : traverseViaReverseShapePath "@solidshapes:Task/ex:inProject" ; shapetree : hasShapeTree solidtrees : Task ] ; shapetree : matchesUriTemplate "{uuid}" .
solidtrees : Task a shapetree : ShapeTree ; shapetree : expectsType shapetree : ShapeTreeResource ; shapetree : validatedBy solidshapes : Task ; shapetree : matchesUriTemplate "{uuid}" .
2.2. acme.example
2.2.1. Data Registrations
acme : 4d594c61-7cff-484a-a1d2-1f353ee4e1e7 a interop : DataRegistration ; interop : registeredBy <https://garry.example/#id> ; interop : registeredWith <https://solidmin.example/#app> ; interop : registeredAt "2020-08-23T21:12:27.000Z" ^^ xsd : dateTime ; interop : registeredShapeTree solidtrees : Project ; interop : hasRegisteredDataInstance acme : 9005ea66-fcc3-47af-b082-5da78140bc53\#project , acme : df0aa24c-fe28-4e9f-9f35-2a9a29d63a06\#project , acme : 21270a16-f07d-417e-9d7c-274cbd8d24f0\#project .
acme : 4d594c61-7cff-484a-a1d2-1f353ee4e1e7 a interop : DataRegistration ; interop : registeredBy <https://garry.example/#id> ; interop : registeredWith <https://solidmin.example/#app> ; interop : registeredAt "2020-08-23T21:12:45.000Z" ^^ xsd : dateTime ; interop : registeredShapeTree solidtrees : Task ; interop : hasRegisteredDataInstance acme : 9b982a4b-2642-496b-9990-d4464fb36771\#task , acme : cf5d7d37-ae8e-40c1-a5d1-ef22cf228507\#task , acme : ef55ad4d-335f-48fe-8224-c813d4649873\#task , acme : 6702961f-e74d-4fa9-991c-b95749d790cb\#task , acme : 7496fcb2-9472-4860-ae7e-c48baf9ff92f\#task , acme : caaadc1f-affa-4fca-bd9a-98c174947cfe\#task , acme : 260ca6e2-b583-4e11-8f02-99e14638d4c1\#task .
2.3. alice.example
2.3.1. WebID Document
alice : \#id a interop : Agent ; interop : hasAccessGrantRegistrySet alice : 40c34ba8-5d85-47e5-af40-abc3e7fecdec ; interop : hasRemoteDataRegistrySet alice : ba4da3ec-dea4-41b2-be02-e4bf7a9477df .
2.3.2. Registry Sets
alice : ba4da3ec-dea4-41b2-be02-e4bf7a9477df a interop : RemoteDataRegistrySet ; interop : hasRegistry alice : 6f6e4241-75a2-4780-9b2a-40da53082e54 .
alice : 6f6e4241-75a2-4780-9b2a-40da53082e54 a interop : RemoteDataRegistry ; interop : hasRegistration alice : 33caf7be-f804-4155-a57a-92216c577bd4 .
alice : 40c34ba8-5d85-47e5-af40-abc3e7fecdec a interop : AccessGrantRegistrySet ; interop : hasRegistry alice : 3c7f1d03-0721-4eb1-9adf-6a8690f33b35 .
alice : 3c7f1d03-0721-4eb1-9adf-6a8690f33b35 a interop : AccessGrantRegistry ; interop : hasRegistration alice : 6b1b6e39-75e4-44f8-84f3-104b1a8210ad .
2.3.3. Data Registrations
alice : 773605f0-b5bf-4d46-878d-5c167eac8b5d a interop : DataRegistration ; interop : registeredBy <https://alice.example/#id> ; interop : registeredWith <https://solidmin.example/#app> ; interop : registeredAt "2020-10-17T11:42:35.000Z" ^^ xsd : dateTime ; interop : registeredShapeTree solidtrees : Project ; interop : hasRegisteredDataInstance alice : ccbd77ae-f769-4e07-b41f-5136501e13e7\#project .
alice : 4d594c61-7cff-484a-a1d2-1f353ee4e1e7 a interop : DataRegistration ; interop : registeredBy <https://alice.example/#id> ; interop : registeredWith <https://solidmin.example/#app> ; interop : registeredAt "2020-10-17T11:42:36.000Z" ^^ xsd : dateTime ; interop : registeredShapeTree solidtrees : Task ; interop : hasRegisteredDataInstance alice : 576520a6-af5a-4cf9-8b40-8b1512b59c73\#task , alice : 106a82aa-6911-4a7e-a49b-383cbaa9da66\#task .
alice : 33caf7be-f804-4155-a57a-92216c577bd4 a interop : RemoteDataRegistration ; interop : registeredBy <https://alice.example/#id> ; interop : registeredWith <https://jarvis.alice.example/#agent> ; interop : registeredAt "2020-09-05T06:15:01Z" ^^ xsd : dateTime ; interop : updatedAt "2020-09-05T06:15:01Z" ^^ xsd : dateTime ; interop : providedAt "2020-09-05T06:16:01Z" ^^ xsd : dateTime ; interop : hasDataReceipt alice : 23dd1856-ac91-4acb-85ce-7f335057c8ae ; interop : hasRegistration acme : f201471d-b1fb-40ad-9eac-867aaf09c3e5 ; interop : registeredShapeTree solidtrees : Project ; interop : scopeOfDataGrant interop : SelectedInstances ; interop : accessMode acl : Read , acl : Write ; interop : hasRemoteDataInstance alice : c8d29dce-eb5b-4894-9e4a-02781dbfcba3 , alice : a3859644-a71c-4a41-b253-d0cce25a0126 .
alice : c8d29dce-eb5b-4894-9e4a-02781dbfcba3 a interop : RemoteDataInstance ; interop : registeredAt "2020-09-05T06:15:01Z" ^^ xsd : dateTime ; interop : updatedAt "2020-09-05T06:15:01Z" ^^ xsd : dateTime ; interop : providedAt "2020-09-05T06:16:01Z" ^^ xsd : dateTime ; interop : hasDataReceipt alice : 23dd1856-ac91-4acb-85ce-7f335057c8ae ; interop : registeredShapeTree solidtrees : Project ; interop : accessMode acl : Read , acl : Write ; interop : hasRegisteredDataInstance acme : 9005ea66-fcc3-47af-b082-5da78140bc53\#project .
alice : a3859644-a71c-4a41-b253-d0cce25a0126 a interop : RemoteDataInstance ; interop : registeredAt "2020-09-05T06:15:01Z" ^^ xsd : dateTime ; interop : updatedAt "2020-09-05T06:15:01Z" ^^ xsd : dateTime ; interop : providedAt "2020-09-05T06:16:01Z" ^^ xsd : dateTime ; interop : hasDataReceipt alice : 23dd1856-ac91-4acb-85ce-7f335057c8ae ; interop : registeredShapeTree solidtrees : Project ; interop : accessMode acl : Read , acl : Write ; interop : hasRegisteredDataInstance acme : 21270a16-f07d-417e-9d7c-274cbd8d24f0\#project .
2.3.4. Access Grants
alice : 6b1b6e39-75e4-44f8-84f3-104b1a8210ad a interop : AccessGrant ; interop : registeredBy alice : \#me ; interop : registeredWith <https://solidmin.example/#app> ; interop : registeredAt "2020-09-05T06:15:01Z" ^^ xsd : dateTime ; interop : updatedAt "2020-09-05T06:15:01Z" ^^ xsd : dateTime ; interop : hasAccessGrantSubject <#subject> ; interop : hasDataGrant <#project-grant> , <#task-grant> . <#subject> a interop : AccessGrantSubject ; interop : accessByAgent alice : \#me ; interop : accessByApplication <https://performchart.example/#app> . <#project-grant> a interop : DataGrant ; interop : registeredShapeTree solidtrees : Project ; interop : accessMode acl : Read ; interop : scopeOfDataGrant interop : AllInstances . <#task-grant> a interop : DataGrant ; interop : registeredShapeTree solidtree : Task ; interop : accessMode acl : Read ; interop : scopeOfDataGrant interop : AllInstances .
2.4. bob.example
2.4.1. Data Registrations
bob : 0af793c1-8abc-441c-aacc-f78483b34217 a interop : DataRegistration ; interop : registeredBy <https://bob.example/#id> ; interop : registeredWith <https://solidmin.example/#app> ; interop : registeredAt "2019-03-14T13:42:31.000Z" ^^ xsd : dateTime ; interop : registeredShapeTree solidtrees : Project ; interop : hasRegisteredDataInstance bob : e293da85-59cf-45e6-9c1c-c721cfa59893\#project .
bob : 4675444a-8a4d-46e1-abfe-85147e5a9b76 a interop : DataRegistration ; interop : registeredBy <https://bob.example/#id> ; interop : registeredWith <https://solidmin.example/#app> ; interop : registeredAt "2019-03-14T13:42:32.000Z" ^^ xsd : dateTime ; interop : registeredShapeTree solidtrees : Task ; interop : hasRegisteredDataInstance bob : 17fe4de3-6c6a-4ebe-9b75-b942cfdfa087\#task , bob : df5581b7-c047-49f8-9f34-ed8fc6570548\#task .
2.5. performchart.example
performchart : \#app a interop : Application ; interop : applicationName "PerformChart" ; interop : applicationDescription "Creates performance statistics and visualisation for the projects you work on" ; interop : hasAccessNeedGroup <#access> . <#access> interop : hasAccessNeed <#project> ; interop : hasAccessNeedOverride <#task> ; interop : hasAccessDecoratorIndex performchart : 44430955-4844-466b-9e1b-04893d0a0d50 . <#project> a interop : AccessNeed ; interop : registeredShapeTree solidtrees : Project ; interop : recursivelyAuthorize true ; interop : accessNecessity interop : AccessRequired ; interop : accessMode acl : Read . <#task> # Override to stop recursion a interop : AccessNeed ; interop : registeredShapeTree solidtrees : Task ; interop : recursivelyAuthorize false ; interop : accessNecessity interop : AccessRequired ; interop : accessMode acl : Read .