--- tags: Solid, Shape Trees --- # 2021-07-07 TS Implementation ## Data ### Project1 ``` turtle <Project1> :hasReferenceList <Project1RefListTasks> . <Project1> :hasReferenceList <Project1RefListMilestones> . ``` ### Project1RefList ``` turtle <Project1RefListTasks> # pm:forProject <Project1> ; :hasItem <Task2> . <Project1> :hasReferenceList <Project1RefList> . <Project1> pm:hasTask <Task2> ; ``` ## Schema ``` shex <ProjectShape> { :hasReferenceList @<ProjectRefListShape> # ^pm:forProject @<ProjectRefListShape> } <ProjectRefListShape> { pm:hasItem @<TaskShape> } <TaskShape> { # misc properties... } ``` ## ShapeTrees ```turtle <ProjectShapeTree> :hasShape <ProjectShape> ; :references [ :hasShapeTree <ProjectRefListTaskShapeTree> ; #:shapePath "@<ProjectShape>~pm:forProject" #:shapePath "@<ProjectShape>~:hasReferenceList~@<TaskShape>" :shapePath "@<TaskShape>" ], [ :hasShapeTree <ProjectRefListMilestoneShapeTree> ; #:shapePath "@<ProjectShape>~pm:forProject" :shapePath "@<ProjectShape>~:hasReferenceList~@<MilesoneShape>" ] . <ProjectRefListTaskShapeTree> :hasShape <Project1RefListShape> ; :refernces [ :hasShapeTree <TaskShapeTree> ; #:shapePath "@<ProjectRefListShape>~pm:hasTask" :shapePath "@<ProjectRefListShape>~pm:hasItem" ] . <TaskShapeTree> :hasShape <TaskShape> . ```