You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: 01-tree-specification.bs
+1-61
Original file line number
Diff line number
Diff line change
@@ -19,7 +19,7 @@ Abstract:
19
19
20
20
# Overview # {#overview}
21
21
22
-
<img src="https://docs.google.com/drawings/d/e/2PACX-1vTTCjBkBum1J4xgbg0oZJaD_H05dpZxhL6jrp1yzqoIsYw5EOa-7D24No_rfEyTipq1rLb-_tPTEYV0/pub?w=1093&h=546" alt="An overview of the TREE specification with the TREE collection, a reference to the first focus node of its members, and the relations to other nodes from the current node."/>
22
+
<img src="https://docs.google.com/drawings/d/e/2PACX-1vTTCjBkBum1J4xgbg0oZJaD_H05dpZxhL6jrp1yzqoIsYw5EOa-7D24No_rfEyTipq1rLb-_tPTEYV0/pub?w=1093&h=546" alt="An overview of the TREE specification with the TREE collection, a reference to the first focus node of its members, and the relations to other nodes from the current node.">
23
23
24
24
The TREE specification introduces these core concepts:
25
25
* a <code>tree:Collection</code> is a subclass of <code>dcat:Dataset</code> ([[!vocab-dcat-3]]). The specialization being that it is a DCAT dataset a collection of members. It typically has these properties when described in a node:
@@ -130,66 +130,6 @@ The latter uses the <code>sh:NodeShape</code> from the <code>tree:shape</code> p
130
130
131
131
Note: The way we process SHACL shapes into Shape Template is important to understand in order to know when an HTTP request will be triggered when designing SHACL shapes. A cardinality constraint not being exactly matched or a <code>sh:pattern</code> not being respected will not trigger an HTTP request, and instead just add the invalid quads to the Member. This is a design choice: we only define triggers for HTTP request from the SHACL shape to come to a complete set of quads describing the member the data publisher pointed at using <code>tree:member</code>.
132
132
133
-
# Discovery and source selection# {#hypermedia}
134
-
135
-
TREE tackles discovery and source selection on three levels: i) interface discovery, ii) view discovery, and iii) dataset discovery.
136
-
Interface discovery discovers what collection the current page is part of, and discovers what the next possible HTTP requests are through relations and search forms.
137
-
One dataset can have multiple views that can be published across different servers, selecting one for a certain use case is part of the view discovery.
138
-
Dataset discovery is then selecting a <code>tree:Collection</code> of interest.
139
-
140
-
141
-
## Interface discovery ## {#interface-discovery}
142
-
143
-
Interface discovery starts when a URL is provided to a specific <code>tree:Node</code>.
144
-
A node from which all members of a collection can be discovered (an “entry node”), can be found through a triple stating <code>ex:C1 tree:view ex:N1</code> with <code>ex:C1</code> being a <code>tree:Collection</code> and <code>ex:N1</code> being a <code>tree:Node</code>.
145
-
146
-
When the current page is a <code>tree:Node</code>, there MUST be a property linking the current page URL to the URI of the <code>tree:Collection</code>. However, not from all <code>tree:Node</code>s all members can be reached, and therefore 2 other properties can be used: <code>void:subset</code>, or the inverse property, <code>dcterms:isPartOf</code>.
147
-
148
-
<code>ex:C1 tree:view <> .</code> links the current page to the <code>tree:Collection</code>.
149
-
150
-
We refer to next chapters for traversing across multiple relations, or for using search forms.
151
-
152
-
## View discovery ## {#multiple-views}
153
-
154
-
Todo: This will be reworked
155
-
156
-
Note: How a client picks the right view is use case specific. The <code>tree:ViewDescription</code>’s properties can help in that regards.
157
-
158
-
In order to prioritize a specific view link, the relations and search forms in the entry nodes can be studied for their relation types, path or remaining items.
159
-
The class <code>tree:ViewDescription</code> indicates a specific TREE structure on a <code>tree:Collection</code>.
160
-
Through the property <code>tree:viewDescription</code> a <code>tree:Node</code> can link to an entity that describes the view, and can be reused in data portals as the <code>dcat:DataService</code>.
161
-
162
-
<div class="example">
163
-
```turtle
164
-
## What can be found in a tree:Node
165
-
ex:N1 a tree:Node ;
166
-
tree:viewDescription ex:View1 .
167
-
168
-
ex:C1 a tree:Collection ;
169
-
tree:view ex:N1 .
170
-
171
-
## What can be found on a data portal
172
-
ex:C1 a dcat:Dataset .
173
-
ex:View1 a tree:ViewDescription, dcat:DataService ;
174
-
dcat:endpointURL ex:N1 ; # The entry point that can be advertised in a data portal
175
-
dcat:servesDataset ex:C1 .
176
-
```
177
-
</div>
178
-
179
-
When there is no <code>tree:viewDescription</code> property in this page, a client either already discovered the description of this view in an earlier <code>tree:Node</code>, either the current <code>tree:Node</code> is implicitly the ViewDescription. Therefore, when the property path <code>tree:view → tree:viewDescription</code> does not yield a result, the view properties MUST be extracted from the object of the <code>tree:view</code> triple.
180
-
A <code>tree:Node</code> can also be double typed as the <code>tree:ViewDescription</code>. A client must thus check for ViewDescriptions on both the current node without the <code>tree:viewDescription</code> qualification, as on the current node with the <code>tree:viewDescription</code> link.
181
-
182
-
183
-
## Dataset discovery ## {#multiple-collections}
184
-
185
-
When multiple collections are found by a client, it can choose to prune the collections based on the <code>tree:shape</code> property.
186
-
Therefore a data publisher SHOULD annotate a <code>tree:Collection</code> instance with a SHACL shape.
187
-
The <code>tree:shape</code> points to a SHACL description of the shape (<code>sh:NodeShape</code>).
188
-
189
-
Note: the shape can be a blank node, or a named node on which you should follow your nose when it is defined at a different HTTP URL.
190
-
191
-
Note: For compatibility with the [Solid specifications](https://solidproject.org/TR/), a ShEx shape may also be given (see the chapter on compatibility bellow).
192
-
193
133
# The tree:Relations # {#relations}
194
134
195
135
The initial configuration of the <code>tree:Collection</code> and the description of the view is always provided when the view has been discovered, either in a separate document describing the view, either in the entry node itself. The configuration MUST be reused on any subsequent <code>tree:Node</code>.
0 commit comments