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: specs/0-introduction.md
+9-8
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,7 @@
5
5
The TREE specification introduces these core concepts:
6
6
* 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:
7
7
- <code>tree:member</code> points at the first focus node from which to retrieve and extract all quads of a member.
8
-
- <code>tree:view</code> points to a <code>tree:Node</code> from which all members can be reached.
8
+
- <code>tree:view</code> points to the current <code>tree:Node</code> you’re visiting.
9
9
- <code>tree:shape</code> indicates the [[!SHACL]] shape to which each member in the collection adheres.
10
10
- <code>tree:viewDescription</code> links to a description of the view (a <code>tree:ViewDescription</code>). Multiple descriptions MAY be provided that MUST be combined.
11
11
* a <code>tree:Node</code>: is a page on which relations to other pages are described through the <code>tree:relation</code> predicate, and/or through which a next <code>tree:Node</code> can be found by using the <code>tree:search</code> form.
@@ -35,7 +35,7 @@ The first step when creating a TREE hypermedia interface is defining a collectio
35
35
```
36
36
</div>
37
37
38
-
From the moment this collection of members grows too big for one page, a fragmentation needs to be created in which an initial set of member can be found on an entry node, and more members can be found by interpreting the TREE hypermedia controls. This is illustrated by the next example:
38
+
From the moment this collection of members grows too large for one page, a fragmentation needs to be created in which an initial set of member can be found on an entry node, and more members can be found by interpreting the TREE hypermedia controls. This is illustrated by the next example:
39
39
40
40
<divclass="example">
41
41
```turtle
@@ -46,9 +46,8 @@ From the moment this collection of members grows too big for one page, a fragmen
46
46
tree:member ex:Subject1, ex:Subject2 .
47
47
48
48
ex:Node1 a tree:Node ;
49
-
tree:relation ex:R1,ex:R2 ;
50
-
tree:viewDescription ex:ViewDescription1 .
51
-
49
+
tree:relation ex:R1,ex:R2 .
50
+
52
51
ex:R1 a tree:GreaterThanOrEqualToRelation ;
53
52
tree:node ex:Node3 ; # This is the URL of another page
54
53
tree:value 3;
@@ -92,15 +91,17 @@ A <code>tree:Collection</code> is a set of <code>tree:Member</code>s. The set of
92
91
93
92
A <code>tree:Member</code> is a set of (at least one) quad(s) defined by the member extraction algorithm (next subsection).
94
93
95
-
A <code>tree:Node</code> is a dereferenceable resource of <code>tree:Relation</code>s and a subset of (<code>⊆</code>) members of the collection. In a <code>tree:Node</code>, both the set of <code>tree:Relation</code>s as the subset of members MAY be empty. The same member MAY be contained in multiple nodes.
94
+
A <code>tree:Node</code> is a dereferenceable resource containing <code>tree:Relation</code>s and a subset of (<code>⊆</code>) members of the collection. In a <code>tree:Node</code>, both the set of <code>tree:Relation</code>s as the subset of members MAY be empty. The same member MAY be contained in multiple nodes.
96
95
97
96
A <code>tree:Relation</code> is a function denoting a conditional link to another <code>tree:Node</code>.
98
97
98
+
A <code>tree:Node</code>, apart from the root node, has exactly one other <code>tree:Node</code> linking into it through one or more relations.
99
+
99
100
Note: The condition of multiple <code>tree:Relation</code>s to the same <code>tree:Node</code> MUST be combined with a logical AND.
100
101
101
-
A View is a specific set of interlinked <code>tree:Node</code>s, that together contain all members in a collection. A specific view will adhere to a certain growth or tree balancing strategy. In one view, completeness MUST be guaranteed.
102
+
A View is a specific set of interlinked <code>tree:Node</code>s, that together contain all members in a collection. A specific view will adhere to a certain growth or tree balancing strategy. In one View, completeness MUST be guaranteed, unless the View has a retention policy which becomes possible in LDES.
102
103
103
-
A <code>tree:search</code> form is a IRI template, that when filled out with the right parameters becomes a <code>tree:Node</code> IRI, or when dereferenced will redirect to a <code>tree:Node</code> from which all members in the collection that adhere to the described comparator can be found.
104
+
A <code>tree:search</code> form is an IRI template, that when filled out with the right parameters becomes a <code>tree:Node</code> IRI, or when dereferenced will redirect to a <code>tree:Node</code> from which all members in the collection that adhere to the described comparator can be found.
104
105
105
106
# The member extraction algorithm # {#member-extraction-algorithm}
Copy file name to clipboardexpand all lines: specs/1-discovery.md
+3-8
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# Discovery and source selection# {#hypermedia}
2
2
3
-
TREE tackles discovery on three levels: i) interface discovery, ii) view discovery, and iii) dataset discovery.
3
+
TREE tackles discovery and source selection on three levels: i) interface discovery, ii) view discovery, and iii) dataset discovery.
4
4
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.
5
5
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.
6
6
Dataset discovery is then selecting a <code>tree:Collection</code> of interest.
@@ -13,18 +13,13 @@ A node from which all members of a collection can be discovered (an “entry nod
13
13
14
14
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>.
15
15
16
-
Three properties MAY thus be used:
17
-
1. <code>ex:C1 tree:view <> .</code><br/>May be used *only* in the case when the entire <code>tree:Collection</code> can be found starting from the current node.
18
-
2. <code>ex:C1 void:subset <> .</code><br/>When the node is not a node from which all members can be found, but still is a subset of the collection that can be found.
19
-
3. <code><> dcterms:isPartOf ex:C1 .</code><br/>The inverse property of 2.
16
+
<code>ex:C1 tree:view <> .</code> links the current page to the <code>tree:Collection</code>.
20
17
21
18
We refer to next chapters for traversing across multiple relations, or for using search forms.
22
19
23
20
## View discovery ## {#multiple-views}
24
21
25
-
Every node linked from <code>tree:view</code> MUST be an entry point to retrieve **all** members of the collection.
26
-
Multiple <code>tree:view</code> links MAY be provided.
27
-
If a TREE client wants to guarantee compleneteness, it picks one link and then traverses all relations.
22
+
Todo: This will be reworked
28
23
29
24
Note: How a client picks the right view is use case specific. The <code>tree:ViewDescription</code>’s properties can help in that regards.
Copy file name to clipboardexpand all lines: specs/2-traversing.md
+5-1
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,8 @@
2
2
3
3
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>.
4
4
5
+
While discovering and traversing the interface, a client MUST take the descriptions on top of the Node, the View and the Collection with it.
6
+
5
7
## Traversing relations ## {#traversing}
6
8
7
9
A <code>tree:Node</code> element MAY have one or more <code>tree:relation</code> properties. A relation is an entity of the type <code>tree:Relation</code>, and MAY have a more specific type. A <code>tree:Relation</code> MUST have one <code>tree:node</code> object of the type <code>tree:Node</code>. By default, all nodes need to be followed, unless the client is able to select this relation for pruning (see next section).
@@ -21,6 +23,8 @@ Note: An example of a <code>tree:import</code> is given [in the repository](http
21
23
22
24
## Fallbacks ## {#fallbacks}
23
25
26
+
When there is no <code>tree:view</code> triple provided, a client MUST use the <code>tree:Collection</code> from the previous page and still continue extracting members, and extract further relations defined on the current page URL.
27
+
24
28
When there are no <code>tree:member</code>s and/or no <code>tree:Collection</code> defined, then still a <code>tree:Relation</code> can be defined. The <code>tree:path</code> in the <code>tree:Relation</code> then refers to a pattern that can start from every triple in the page.
25
29
26
30
When no <code>tree:path</code> is defined, the <code>tree:value</code> MUST be compared to all members’ triples that *can be compared to* the <code>tree:value</code> as defined by the type of the relation (or when no members or collection are defined, on every triple in the page).
@@ -29,7 +33,7 @@ When due to <code>rdfs:range</code> incompatibility, the object cannot be compar
29
33
Note: This may enable server developers to indicate an index on all literals of the members (e.g., a prefix relation on title, description and body text) without having to indicate all of the alternative paths in the <code>tree:path</code>.
30
34
31
35
The target object of a <code>tree:path</code> SHOULD be materialized in the current Node document, but when it is not, the object MAY be considered implicit on the condition both <code>tree:path</code> and <code>tree:member</code> are defined.
32
-
In contrast to <code>shacl:path</code>, a <code>tree:path</code> MAY refer to an implicit property and may not be materialized in the current response. This may break SPARQL processors that did not yet come across the object before in their query plan. However, the tree may still be useful for query processors that, for example, prioritize queries according to the user’s location, and first download nodes that are nearby the user. Therefore, the materialized location of the object is not needed. While not recommended, possible heuristics could try to infer the data, could try to fetch it through another <code>tree:Collection</code>, or retrieve it using URI dereferencing.
36
+
In contrast to <code>sh:path</code>, a <code>tree:path</code> MAY refer to an implicit property and may not be materialized in the current response. This may break SPARQL processors that did not yet come across the object before in their query plan. However, the tree may still be useful for query processors that, for example, prioritize queries according to the user’s location, and first download nodes that are nearby the user. Therefore, the materialized location of the object is not needed. While not recommended, possible heuristics could try to infer the data, could try to fetch it through another <code>tree:Collection</code>, or retrieve it using URI dereferencing.
Copy file name to clipboardexpand all lines: vocabulary.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -91,7 +91,7 @@ See [](#relations)
91
91
92
92
### tree:view ### {#view}
93
93
94
-
Links the collection to a <code>tree:Node</code> from which all members can be found. If only a part of the collection’s members can be found from that point on, only use <code>dcterms:isPartOf</code> or <code>void:subset</code>.
94
+
Links the collection to the current <code>tree:Node</code>.
0 commit comments