# Shape Trees - Editorial Session
April 19th, 2021
## Present
- Justin B
- Eric P
## Minutes
### Client / Server Operations
JB: The document right now is really confusing because it mixes the roles between client and server, when instead it should clearly delineate client/server operations, and in non-normative text explain how a client could perform the server operations in (e.g.) a proxy-like scenario.
RESOLVED: Documentation will break out client / server operations clearly. +1 JB, +1 EP
ACTION: ericP to add introductory section explaining that the `server` can also be implemted as a proxy library per https://github.com/shapetrees/specification/issues/37#issuecomment-822364846.
### Initialization of Statics?
JB: PLANT has a last step called "initialize static content". Looks at "st:contained" Shape Trees for static labels.
PROPOSED: Shift the burden of initializing statics / creating any resources to the invoker of the plant operation (e.g. the client) - +1 JB, +1 EP
### Shape Tree Metadata on non Container Resources
JB: I find it problematic that the spec doesn't support shape tree metadata on non-container resources. If a given non-container resource is managed by a shape tree, i should be able to discover that directly through metadata associated with the resource.
PROPOSED: Store / associate shape tree metadata with non-container resources. +1 JB, +1 EP
[documented by ericP in https://github.com/shapetrees/specification/issues/38#issuecomment-821800928]
### Shape Trees for Shape Validation
JB: should folks use Shape Trees to say this node conforms to this shape?
... utility: if your server supports ShapeTrees, it gives you a protocol/syntax for applying shape validation. If it's not ShapeTrees, we need another syntax.
... engineering:
``` turtle
[
st:node <#doc> ;
st:shape <.../SomeShape> ;
st:shapeTree <.../SomeShapeTree>
]
```
vs. without ShapeTrees (equivalent of [ShapeMap](https://shexspec.github.io/shape-map/))
``` turtle
[
st:node <#doc> ;
st:shape <.../SomeShape>
]
```
### Link Relation for Shape Tree Metadata
EP: Issue with rel=https://shapetrees.org#ShapeTree as the link relation type, because it's not taking you to the shapetree ([example](https://shapetrees.org/TR/specification/#discover)), it's taking you to a metadata resource with one or more shape tree locator(s).
PROPOSED: Change the link relation to something (like) https://shapetrees.org/#ShapeTreeLocator -
current:
``` turtle
<#shapetree>
st:hasShapeTreeLocator <#bc1b490a-537d-4749-b778-cd7d6da3ac56> .
<#bc1b490a-537d-4749-b778-cd7d6da3ac56>
a st:ShapeTreeLocator ;
st:hasRootShapeTree <http://commonnote.example/commonnote#container-tree> ;
st:hasShapeTree <http://commonnote.example/commonnote#container-tree> ;
st:hasShapeTreeInstanceRoot </data/CommonNotes/> .
```
proposed:
`Link: <...#bc1b490a-537d-4749-b778-cd7d6da3ac56>; rel="http://shapetrees.org/#ShapeTreeLocator"
`
``` turtle
<#bc1b490a-537d-4749-b778-cd7d6da3ac56>
a st:ShapeTreeLocator ;
st:location [
st:hasRootShapeTree <http://commonnote.example/commonnote#container-tree> ;
st:hasShapeTree <http://commonnote.example/commonnote#container-tree> ;
st:hasShapeTreeInstanceRoot </data/CommonNotes/>
st:node <#doc> ;
st:shape <.../SomeShape> ;
] ;
.
```
``` turtle
<#bc1b490a-537d-4749-b778-cd7d6da3ac56>
a st:ShapeTreeLocator ;
st:location [
st:hasRootShapeTree <http://commonnote.example/commonnote#container-tree> ;
st:hasShapeTree <http://commonnote.example/commonnote#container-tree> ;
st:hasShapeTreeInstanceRoot </data/CommonNotes/>
st:node <#doc> ;
st:shape <.../SomeShape> ;
], [
st:hasRootShapeTree <http://commonnote.example/commonnote#container-tree> ;
st:hasShapeTree <http://commonnote.example/commonnote#container-tree> ;
st:hasShapeTreeInstanceRoot </data/CommonNotes/>
st:node <#doc> ; # maybe another node? don't know why not.
st:shape <.../AnotherShape> ;
] ;
.
```
PROPOSED: Change the metadata structure to use st:ShapeTreeLocator and st:location(s). +1 EP, +1 JB
PROPOSED: Store the focus node and shape in each st:location. +1 EP, +1 JB
COMPLETED: https://github.com/shapetrees/specification/pull/43