-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathprofile-1.x-requirements.html
105 lines (97 loc) · 4.54 KB
/
profile-1.x-requirements.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
<section id="requirements">
<h2>Profile Requirements</h2>
<p>
The following requirements were identified by the WoT profile task force and are addressed by the
Profile 1.0 specification.
</p>
<h3>Interoperability</h3>
<!-- Supporters: Oracle, Intel, Siemens, Fujitsu, Ben, Cristano -->
<p>
This is the most important objective of the profile.
A TD Consumer satisfying the requirements of a profile should be able to process any TD also satisfying the
profile
and should be able to correctly interact with all affordances of the Thing such a TD describes.
</p>
This implies that a profile has three parts:
<ul>
<li>Restrictions on TDs</li>
<li>Implementation requirements, constraints and behavioral assertions for Consumers</li>
<li>Implementation requirements, constraints and behavioral assertions on Things</li>
</ul>
<section class="note">
Note: The WoT HTTP Basic Profile does not prevent a TD to have forms for additional protocols,
but these can be ignored by compliant consumers, and could be removed without
affecting profile conformance and compatibility.
This may be useful for consumers that support multiple profiles.
</section>
<h3>Limit and reduce complexity</h3>
<!-- Supporters: Oracle, Siemens, Ben, Cristiano -->
<p>
Complexity addresses at least the following two things to simplify the development and
reduce the implementation effort:
</p>
<ul>
<li>Implementation complexity on a thing and consumer, e.g. eliminating the need of RDF processing,
but still permitting semantic annotations.</li>
<li>Simplifying thing description to have fewer variations.</li>
<li>Limiting the effort for JSON implementation.</li>
</ul>
<h3>No Ambiguities, select single choice</h3>
<!-- Supporters: Oracle, Fujitsu, Intel, Ben, Cristiano, Ege -->
<p>
Get rid of ambiguities, i.e. clarify specifications to define interpretation of a TD and behavior of the thing and
consumer.
</p>
<p>
Examples are the choice of properties vs. actions, use of PUT or POST for HTTP, observe protocols.
</p>
<h3>Developer guidance</h3>
<!-- Supporters: Fujitsu, Siemens, Intel, Oracle, Ben, Cristiano-->
<p>
A profile should help define what needs to be implemented. This requirement also includes behavioral goals and
recommendations about best practice for the implementation of Consumers and Things.
</p>
<h3>Multiple profiles (mechanism)</h3>
<!-- Supporters: Intel, Siemens, Ben, Cristiano, Hitachi -->
<p>
The mechanism used to indicate that a TD satisfies a profile should be general enough to indicate
the TD satisfies the requirements for multiple profiles.
</p>
<h3>Composable profiles</h3>
<!-- Proposer: Intel, Hitachi, Siemens, Ben(*)-->
<p>
It should be possible to combine multiple profiles both for production and consumption:
</p>
<p>
It should be possible to indicate that a consumer can ingest TDs that satisfy one or more profiles, even if each
TDs
individually only satisfies one profile. For example, a Smart Building may need to use both "constrained" devices
and
"unconstrained" devices. A gateway consuming TDs should be able to ingest TDs designed for both the constrained
and unconstrained
contexts.
</p>
<p>
A Thing that satisfies all the requirements for multiple TDs (for example, a device using protocols common to two
different usage contexts) should be able to indicate that.
</p>
<h3>Validatible TDs</h3>
<!-- Supporters: Intel, Oracle, Ben, Cristiano -->
<p>
Whether or not a TD satisfies the requirements of a given profile should be verifiable with automated tools.
We can use the existing TD JSDON Schema as a basis and reuse the existing tooling (TD-playground)
</p>
<h3>Identification of profiles</h3>
<!-- Supporters: Intel, Siemens, Fujitsu, Hitachi, Ben, Oracle -->
<p>
There should be a mechanism to identify which profiles a TD satisfies. This mechanism should be intrinsic to a TD,
i.e. be in-band.
</p>
<h3>Finite set of features and capabilities</h3>
<!-- Supporters: Intel, Oracle, Fujitsu, Ben(*), IRI -->
<p>
A profile should limit the number of options, for example the set of possible protocols,
to a finite set, so that a consumer can consume any TD in a given profile with
a finite and static code base.
</p>
</section>