-
Notifications
You must be signed in to change notification settings - Fork 43
/
index.html
4924 lines (4814 loc) · 247 KB
/
index.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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang='en-US'>
<head>
<!-- link rel="stylesheet" href="testing/atrisk.css" -->
<meta charset='utf-8'>
<title>Web of Things (WoT) Architecture 1.1</title>
<script class="remove" src="https://www.w3.org/Tools/respec/respec-w3c"></script>
<script class="remove">
var respecConfig = {
lint: {
"check-punctuation": true,
"local-refs-exist": true,
"no-http-props": true,
"no-headingless-sections": true
},
doJsonLd: true,
noLegacyStyle: true,
inlineCSS: true,
noIDLIn: true,
group: "wg/wot",
specStatus: "ED",
shortName: "wot-architecture11",
copyrightStart: 2017,
wgPublicList: "public-wot-wg",
implementationReportURI: "https://w3c.github.io/wot-architecture/testing/report11.html",
github: {
repoURL: "https://github.com/w3c/wot-architecture",
branch: "main"
},
previousPublishDate: "2022-09-07",
previousMaturity: "WD",
editors: [
{
name: "Michael Lagally",
w3cid: "47166",
company: "Oracle Corp.",
companyURL: "https://www.oracle.com/"
}, {
name: "Ryuichi Matsukura",
w3cid: "64284",
company: "Fujitsu Ltd.",
companyURL: "https://www.fujitsu.com/"
}, {
name : "Michael McCool",
w3cid : "93137",
company : "Intel Corp.",
companyURL : "https://www.intel.com/"
}, {
name: "Kunihiko Toumura",
w3cid: "83488",
company: "Hitachi, Ltd.",
companyURL: "https://www.hitachi.com/"
}],
formerEditors: [
{
name: "Kazuo Kajimoto",
note: "when at Panasonic Corp."
}, {
name: "Toru Kawaguchi",
w3cid: "79307",
company: "Panasonic Corp.",
companyURL: "https://www.panasonic.com/"
}, {
name: "Matthias Kovatsch",
company: "Huawei",
companyURL: "https://www.huawei.com"
}],
otherLinks: [{
key: "Previous Recommendation",
data: [{
value: "https://www.w3.org/TR/2020/REC-wot-architecture-20200409/",
href: "https://www.w3.org/TR/2020/REC-wot-architecture-20200409/"
}]
}, {
key: "Contributors",
data: [{
value: "In the GitHub repository",
href: "https://github.com/w3c/wot-architecture/graphs/contributors"
}]
}, {
key: "Repository",
data: [{
value: "We are on GitHub",
href: "https://github.com/w3c/wot-architecture/"
}, {
value: "File a bug",
href: "https://github.com/w3c/wot-architecture/issues"
}]
}],
localBiblio: {
"CoRE-RD": {
href: "https://datatracker.ietf.org/doc/html/draft-ietf-core-resource-directory-21",
title: "CoRE Resource Directory",
authors: ["M. Koster", "C. Bormann", "P. van der Stok", "C. Amsuess"],
status: "Internet-Draft",
publisher: "IETF",
date: "13 June 2019"
},
"IEC-FOTF": {
href: "https://www.iec.ch/basecamp/factory-future",
title: "Factory of the future",
publisher: "IEC",
date: "October 2015"
},
"IOT-SCHEMA-ORG": {
href: "https://www.w3.org/community/iotschema/",
title: "Schema Extensions for IoT Community Group"
},
"REST": {
href: "https://www.ics.uci.edu/~fielding/pubs/dissertation/fielding_dissertation.pdf",
title: "REST: Architectural Styles and the Design of Network-based Software Architectures",
authors: ["Roy Thomas Fielding"],
status: "PhD thesis",
publisher: "University of California, Irvine",
date: "2000"
},
"SAREF": {
href: "https://sites.google.com/site/smartappliancesproject/ontologies/reference-ontology",
title: "Smart Appliances REFerence (SAREF) ontology",
publisher: "ETSI",
date: "November 2015"
},
"SOLID": {
href: "https://solidproject.org/TR/",
title: "Solid Technical Reports",
publisher: "W3C Solid CG",
date: "April 2021"
},
"HCI": {
href: "https://www.interaction-design.org/literature/book/the-encyclopedia-of-human-computer-interaction-2nd-ed",
title: "The Encyclopedia of Human-Computer Interaction, 2nd Ed",
publisher: "Interaction Design Foundation",
date: "2013"
},
"NORMAN": {
title: "The Psychology of Everyday Things",
authors: ["Donald A. Norman"],
publisher: "Basic Books",
date: "1988"
},
"MQTT": {
href: "https://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.html",
title: "MQTT Version 3.1.1 Plus Errata 01",
authors: ["Andrew Banks", "Rahul Gupta"],
publisher: "OASIS Standard",
date: "December 2015"
},
"OCF": {
href: "https://openconnectivity.org/developer/specifications/",
title: "OCF Core Specification",
publisher: "Open Connectivity Foundation",
status: "Version 2.0.2",
date: "April 2019"
},
"WOT-USE-CASES-REQUIREMENTS": {
href: "https://www.w3.org/TR/wot-usecases/",
title: "Web of Things (WoT) Use Cases and Requirements",
publisher: "W3C",
authors: ["Michael Lagally", "Michael McCool", "Ryuichi Matsukura", "Tomoaki Mizushima"],
status: "Editor's Draft",
date: "Oct 2020"
},
"LWM2M": {
href: "https://openmobilealliance.org/release/LightweightM2M/V1_1-20180710-A/OMA-TS-LightweightM2M_Core-V1_1-20180710-A.pdf",
title: "Lightweight Machine to Machine Technical Specification: Core",
publisher: "OMA SpecWorks",
status: "Approved Version: 1.1",
date: "August 2018"
},
"CoRAL": {
href: "https://datatracker.ietf.org/doc/html/draft-ietf-core-coral/",
title: "The Constrained RESTful Application Language (CoRAL)",
authors: ["Christian Amsüss","Thomas Fossati"],
publisher: "IETF",
status: "Internet-Draft",
date: "March 2022"
},
"WOT-PIONEERS-1": {
href: "https://pdfs.semanticscholar.org/3ee3/a2e8ce93fbf9ba14ad54e12adaeb1f3ca392.pdf",
title: "Mobile Service Interaction with the Web of Things",
authors: ["E. Rukzio, M. Paolucci", "M. Wagner, H. Berndt", "J. Hamard", "A. Schmidt"],
publisher: "Proceedings of 13th International Conference on Telecommunications (ICT 2006), Funchal, Madeira island, Portugal",
date: "May 2006"
},
"WOT-PIONEERS-2": {
href: "https://escholarship.org/uc/item/1786t1dm",
title: "Putting Things to REST",
authors: ["Erik Wilde"],
publisher: "UCB iSchool Report 2007-015, UC Berkeley, Berkeley, CA, USA",
date: "November 2007"
},
"WOT-PIONEERS-3": {
href: "https://www.vs.inf.ethz.ch/publ/papers/ostermai-poster-2008.pdf",
title: "Poster Abstract: Dyser – Towards a Real-Time Search Engine for the Web of Things",
authors: ["Benedikt Ostermaier",
"B. Maryam Elahi",
"Kay Römer",
"Michael Fahrmair",
"Wolfgang Kellerer"],
publisher: "Proceedings of ACM SenSys 2008, Raleigh, NC, USA",
date: "November 2008"
},
"WOT-PIONEERS-4": {
href: "https://ieeexplore.ieee.org/abstract/document/5678452",
title: "A Resource Oriented Architecture for the Web of Things",
authors: ["Dominique Guinard", "Vlad Trifa", "Erik Wilde"],
publisher: "Proceedings of Internet of Things 2010 International Conference (IoT 2010). Tokyo, Japan",
date: "November 2010"
},
"Y.4409-Y.2070": {
href: "https://www.itu.int/rec/T-REC-Y.2070-201501-I",
title: "ITU-T Rec. Y.4409/Y.2070 (01/2015) Requirements and architecture of the home energy management system and home network services ",
publisher: "ITU-T",
status: "Recommendation",
date: "January 2015"
},
"ISO-IEC-2382": {
href: "https://www.iso.org/obp/ui/#iso:std:iso-iec:2382:ed-1:v2:en",
title: "Information technology — Vocabulary",
publisher: "ISO",
date: "2015"
},
"ISO-IEC-27000": {
href: "https://www.iso.org/obp/ui/#iso:std:iso-iec:27000:ed-5:v1:en",
title: "Information technology — Security techniques — Information security management systems — Overview and vocabulary",
publisher: "ISO",
date: "2018"
},
"ISO-IEC-29100": {
href: "https://www.iso.org/obp/ui/#iso:std:iso-iec:29100:ed-1:v1:en",
title: "Information technology — Security techniques — Privacy framework",
publisher: "ISO",
date: "2011"
}
, "WOT-THING-DESCRIPTION": {
title: "Web of Things (WoT) Thing Description 1.1"
, href: "https://www.w3.org/TR/wot-thing-description11/"
, authors: [
"Sebastian Kaebisch"
, "Takuki Kamiya"
, "Michael McCool"
, "Victor Charpenay"
]
, publisher: "W3C"
, date: "November 2020"
}
, "WOT-DISCOVERY": {
title: "Web of Things (WoT) Discovery"
, href: "https://www.w3.org/TR/wot-discovery/"
, authors: [
"Andrea Cimmino"
, "Michael McCool"
, "Farshid Tavakolizadeh"
, "Kunihiko Toumura"
]
, publisher: "W3C"
, date: "November 2020"
}
, "WOT-SECURITY": {
title: "Web of Things (WoT) Security and Privacy Guidelines"
, href: "https://www.w3.org/TR/wot-security/"
//, href: "https://w3c.github.io/wot-security/"
, authors: [
, "Michael McCool"
, "Elena Reshetova"
]
, publisher: "W3C"
, date: "March 2019"
}
}
};
</script>
<style>
a[href].internalDFN {
color: inherit;
border-bottom: 1px solid #99c;
text-decoration: none;
}
img.wot-arch-diagram {
max-width: 90%;
height: auto;
}
</style>
</head>
<body>
<section id="abstract">
<p>The W3C Web of Things (WoT) enables
interoperability across IoT platforms and application
domains.
The goal of the WoT is to preserve and complement existing
IoT standards and solutions. The W3C WoT architecture is
designed to describe what exists, and only prescribes new mechanisms
when necessary.
</p>
<p>This <em>WoT Architecture</em> specification describes the abstract
architecture for the W3C Web of Things.
This abstract architecture is based on
requirements that were derived from use cases for
multiple application domains.
Several modular building blocks were identified whose detailed
specifications are given in other documents.
This document describes how these building blocks are related and work together.
The WoT abstract architecture defines a basic conceptual
framework that can be mapped onto a variety of concrete deployment scenarios,
several examples of which are given.
However, the abstract architecture described in this specification does not
itself define concrete mechanisms or prescribe any concrete implementation.
</p>
</section>
<section id="sotd">
<p>
This document describes an abstract architecture.
However, there is an
<a href="https://w3c.github.io/wot-architecture/testing/report11.html">Implementation Report</a>
that describes a set of concrete implementations
following the W3C Web of Things architecture.
It also references the other implementation
reports for the various WoT building blocks.
</p>
<!--
<p>The Web of Things Working Group intends to submit this document
for consideration as a <abbr title=
"World Wide Web Consortium">W3C</abbr> Proposed Recommendation
after at least the minimum CR review period has passed. However,
before PR transition is requested, any features or assertions
currently marked as at-risk that did not appear in the Architecture 1.0
specification and do not have at least two implementations at that
time will either be removed or converted into informative
statements, as appropriate.
</p>
-->
<p class="at-risk">At-risk assertions are marked with yellow highlighting.</span></p>
</section>
<section id="introduction" class="informative">
<h1>Introduction</h1>
<p>The goals of the <em>Web of Things</em> (WoT) are to improve the interoperability
and usability of the Internet of Things (IoT). Through a collaboration
involving many stakeholders over many years, several building
blocks have been identified that help address these challenges.
</p>
<p>A set of over 30 WoT <em>use cases</em> were contributed by stakeholders from multiple industries for various
application domains.
These have been collected and were published in the <em>WoT Use Cases and Requirements</em>
<a href="https://www.w3.org/TR/wot-usecases/">https://www.w3.org/TR/wot-usecases/</a> document.
</p>
<p>
The collection of use cases is classified into two categories:
</p>
<ul>
<li>Horizontal use cases that address multiple domains</li>
<li>Domain specific (vertical) use cases for a single application domain</li>
</ul>
<p>These use cases and requirements drive the creation and further evolution
of the W3C WoT specification family.</p>
<p>The WoT architecture specification is focused on the scope of W3C WoT standardization,
which can be broken down into these building blocks as well as the abstract
architecture that defines how they are related.
<p>
The architecture document serves multiple purposes:
</p>
<p>
The building blocks are defined and described in detail in separate specifications.
In addition to defining the abstract architecture and its terminology and
conceptual framework,
this specification also serves as an introduction to the WoT building blocks,
and explains their interworking:</p>
<ul>
<li>The <em>Web of Things (WoT) Thing Description</em> [[?WOT-THING-DESCRIPTION]]
normatively provides a machine-readable
data format for describing the metadata and network-facing interfaces of Things.
It is based upon the fundamental concepts introduced in this document, such as
interaction affordances.
</li>
<li>The <em>Web of Things (WoT) Binding Templates</em> [[?WOT-BINDING-TEMPLATES]]
provides informational guidelines on how to define network-facing interfaces in Things for
particular protocols and IoT ecosystems, which we call Protocol Bindings.
The document also provides examples for a number of existing IoT
ecosystems and standards.
</li>
<li>The <em>Web of Things (WoT) Discovery</em> [[?WOT-DISCOVERY]]
specification defines a distribution mechanism for WoT metadata
(<a>Thing Descriptions</a>).
The WoT Discovery process uses existing mechanisms for first
contact, but provides for access control before serving detailed metadata.
It includes support for directories and self-description.
</li>
<li>The <em>Web of Things (WoT) Scripting API</em> [[?WOT-SCRIPTING-API]],
which is optional, enables the implementation of
the application logic of a Thing using a common JavaScript API
similar to the Web browser APIs. This simplifies IoT application
development and enables portability across vendors and devices.
</li>
<li>The <em>Web of Things (WoT) Security and Privacy Guidelines</em> [[?WOT-SECURITY]]
represent a cross-cutting building block.
This informational document provides guidelines for the secure implementation and
configuration of Things,
and discusses issues which should be considered in any systems implementing W3C WoT.
However, it should be emphasized that
security and privacy can only be fully evaluated in the context
of a complete set of concrete mechanisms for a specific implementation,
which goes beyond the scope of the WoT abstract architecture.
This is especially
true when the WoT architecture is used descriptively for pre-existing systems,
since the W3C WoT cannot constrain the behavior of such systems, it can only
describe them.
In this document we also discuss privacy and security risks and their mitigation
at a high level in sections <a href="#sec-security-considerations"></a>
and <a href="#sec-privacy-considerations"></a>.
</li>
</ul>
<p>This specification also covers non-normative architectural aspects
and conditions for the deployment of WoT systems.
These guidelines are described in the context of example deployment scenarios,
although this specification does not require specific concrete
implementations.
</p>
<p>This specification serves as an umbrella for W3C WoT
specifications and defines the basics such as terminology
and the underlying abstract architecture of the W3C Web of
Things. In summary, the purpose of this specification is to
provide:</p>
<ul>
<li>a set of application domains in <a href="#sec-application-domains"></a>
that were considered to identify use cases for the W3C WoT Architecture,
</li>
<li>a set of common deployment patterns in
<a href="#sec-common-deployment-patterns"></a>,
</li>
<li>a definition of the abstract architecture in
<a href="#sec-wot-architecture"></a>,
</li>
<li>an overview of a set of WoT building blocks
and their interplay in <a href="#sec-building-blocks"></a>,
</li>
<li>an informative guideline on how to map the abstract architecture to
concrete implementations in
<a href="#sec-servient-implementation"></a>,
</li>
<li>informative examples of deployment scenarios in
<a href="#sec-deployment-scenario"></a>,
</li>
<li>and a set of high level
security and privacy considerations to be aware of when
implementing a system based on the W3C WoT architecture in
<a href="#sec-security-considerations"></a> and
<a href="#sec-privacy-considerations"></a>, respectively.
</li>
</ul>
<p>Additional requirements, use cases, conceptual features and new building blocks
are collected in future versions of the <em>WoT Use Cases and Requirement </em>
<a href="https://www.w3.org/TR/wot-usecases/">https://www.w3.org/TR/wot-usecases/</a> document.
</p>
</section>
<section id="conformance"></section>
<section id="terminology" class="informative">
<h1>Terminology</h1>
<p>This specification uses the following terms as defined here.
The WoT prefix is used to avoid ambiguity for terms that are
(re)defined specifically for Web of Things concepts.</p>
<p>
In case of a conflict of a definition with terminology used in another
WoT document, the definition of the WoT Architecture takes precedence.
</p>
<dl>
<dt>
<dfn>Action</dfn>
</dt>
<dd>An Interaction Affordance that allows to invoke a
function of the Thing, which manipulates state
(e.g., toggling a lamp on or off)
or triggers a process on the Thing (e.g., dim a lamp over time).</dd>
<dt>
<dfn data-lt="WoT Anonymous Thing Description" class="lint-ignore">Anonymous TD</dfn>
</dt>
<dd>A Thing Description without a user-defined identifier (`id` attribute).</dd>
<dt>
<dfn>Connected Device</dfn>
</dt>
<dd>
A synonym for <a>Device</a>.</dd>
<dt>
<dfn data-lt="WoT Binding Templates">Binding
Templates</dfn>
</dt>
<dd>
A re-usable collection of blueprints that enable a Thing Description
to be used with a specific protocol, data payload format or an IoT
platform that combine both of them in specific ways. This is done through
additional descriptive vocabularies, Thing Models and examples that aim
to guide the implementers of Things and Consumers alike. </dd>
<dt>
<dfn>Consumed Thing</dfn>
</dt>
<dd>A software abstraction that represents a remote
Thing used by the local application. The abstraction might be
created by a native WoT Runtime, or instantiated
as an object through the WoT Scripting API.</dd>
<dt>
<dfn>Content Type</dfn>
</dt>
<dd>Identifier for the format of the message body.
Also known as media type and MIME type [[RFC2046]]. </dd>
<dt>
<dfn class="lint-ignore">Consuming a Thing</dfn>
</dt>
<dd>To parse and process a TD document and from it create a Consumed
Thing software abstraction as interface for the application in the local
runtime environment.</dd>
<dt>
<dfn>Consumer</dfn>
</dt>
<dd>An entity that can process WoT Thing Descriptions
(including its JSON-based representation format)
and interact with Things (i.e., consume Things).</dd>
<dt>
<dfn>Data Schema</dfn>
</dt>
<dd>A data schema describes the information model and the related payload structure
and corresponding data items that are passed between <a>Things</a>
and <a>Consumers</a> during interactions.</dd>
<dt>
<dfn>Device</dfn>
</dt>
<dd>A Device is a physical entity that has a network interface.
Devices can be described by a <a>Thing Description</a> and are a kind of <a>Thing</a>.
A synonym for <a>Connected Device</a>.
Compare with <a>Service</a>.</dd>
<dt>
<dfn>Digital Twin</dfn>
</dt>
<dd>A digital twin is type of <a>Virtual Thing</a>
that resides on a cloud or edge node.
Digital Twins may be used to represent and provide
a network interface for
real-world devices which may not be continuously online
(see also <a>Shadows</a>),
may be able to run simulations of new applications and services
before they get deployed to the real devices,
may be able to maintain a history of past state or behaviour,
and may be able to predict future state or behaviour.
Digital Twins typically have more functionality than
simple <a>Shadows</a>.
</dd>
<dt>
<dfn class="lint-ignore">Directory</dfn>
</dt>
<dd>A <a>Service</a> that maintains a set of data or metadata describing other <a>Services</a>
or <a>Things</a>. An example would be a <a>WoT Thing Description Directory</a>.</dd>
<dt><dfn data-lt="WoT Discovery">Discovery</dfn>
<dd>Mechanisms defined by WoT for distributing and accessing
<a>WoT Thing Descriptions</a> on the network,
either locally or remotely.</dd>
<dt>
<dfn data-lt="WoT Discoverer" class="lint-ignore">Discoverer</dfn>
</dt>
<dd>An entity which acts as a client of a WoT Discovery process to discover
and fetch a <a>Thing Description</a>,
e.g. by being introduced to and searching a
<a>Thing Description Directory</a> exploration service or by
fetching a <a>Thing Description</a> directly from
the well-known endpoint on a Thing.
</dd>
<dt>
<dfn>Domain-specific Vocabulary</dfn>
</dt>
<dd>Linked Data vocabulary that can be used in the WoT
Thing Description, but is not defined by W3C WoT.</dd>
<dt>
<dfn>Edge Device</dfn>
</dt>
<dd>A device that provides an entry point into
enterprise or service provider core networks. Examples
include hubs, gateways, routers, switches, multiplexers, and a
variety of other access devices.</dd>
<dt>
<dfn data-lt="WoT Enriched Thing Description" class="lint-ignore">Enriched TD</dfn>
</dt>
<dd>A Thing Description embedded with additional attributes
for bookkeeping and discovery.</dd>
<dt>
<dfn>Event</dfn>
</dt>
<dd>An Interaction Affordance that describes an event source,
which asynchronously pushes event data to Consumers
(e.g., overheating alerts).</dd>
<dt>
<dfn data-lt="WoT Exploration">Exploration</dfn>
</dt>
<dd>A discovery mechanism that provides access to detailed metadata in the
form of one or more Thing Descriptions. Exploration mechanisms are in
general protected by security mechanism and are accessible only to authorized users.
</dd>
<dt>
<dfn>Exposed Thing</dfn>
</dt>
<dd>A software abstraction that represents a locally hosted Thing
that can be accessed over the network by remote Consumers.
The abstraction might be created by a native WoT Runtime,
or instantiated as an object through the WoT Scripting API.</dd>
<dt>
<dfn class="lint-ignore">Exposing a Thing</dfn>
</dt>
<dd>To create an Exposed Thing software abstraction in the
local runtime environment to manage the state of a Thing
and interface with the behavior implementation.</dd>
<dt>
<dfn>Hypermedia Control</dfn>
</dt>
<dd>A serialization of a Protocol Binding in hypermedia, that is,
either a Web link [[RFC8288]] for navigation or a Web form for
performing other operations. Forms can be seen as request templates
provided by the Thing to be completed and sent by the Consumer.</dd>
<dt>
<dfn>Interaction Affordance</dfn>
</dt>
<dd>
Metadata of a Thing that shows and describes the possible choices to Consumers,
thereby suggesting how Consumers may interact with the Thing.
There are many types of potential affordances, but
W3C WoT defines three types of Interaction Affordances:
Properties, Actions, and Events.
A fourth Interaction Affordance is navigation, which is already available on the Web through linking.</dd>
<dt>
<dfn>Interaction Model</dfn>
</dt>
<dd>An intermediate abstraction that formalizes and narrows the
mapping from application intent to concrete protocol operations.
In W3C WoT, the defined set of Interaction Affordances constitutes the Interaction Model.</dd>
<dt>
<dfn>Intermediary</dfn>
</dt>
<dd>An entity between Consumers and Things that can proxy, augment, or compose Things
and republish a WoT Thing Description that points to the WoT Interface on the Intermediary instead of the
original Thing.
For Consumers, an Intermediary may be indistinguishable from a Thing, following the Layered System constraint of
REST.</dd>
<dt>
<dfn data-lt="WoT Introduction">Introduction</dfn>
</dt>
<dd>A "first contact" discovery mechanism, whose result is a URL that
references an exploration mechanism. Introduction mechanisms themselves
should not directly provide metadata, and in general are designed to be
open.
</dd>
<dt>
<dfn>IoT Platform</dfn>
</dt>
<dd>A specific IoT ecosystem such as OCF, oneM2M, or
Mozilla Project Things with its own specifications for
application-facing APIs, data model, and protocols or
protocol configurations.</dd>
<dt>
<dfn class="lint-ignore">Metadata</dfn>
</dt>
<dd>Data that provides a description of an entity's abstract characteristics.
For example, a <a>Thing Description</a> is Metadata for a <a>Thing</a>.</dd>
<dt>
<dfn data-lt="Personally Identifiable Information">Personally Identifiable Information (PII)</dfn>
</dt>
<dd>
Any information that can be used to identify the natural person to whom such information relates,
or is or might be directly or indirectly linked to a natural person.
We use the same definition as [[ISO-IEC-29100]].
</dd>
<dt>
<dfn class="lint-ignore">Orchestration</dfn>
</dt>
<dd>
The automation of the behavior of a collection of things.
Orchestration is combining individual things with rules or services
into a new service or virtual <a>Thing</a>.
</dd>
<dt>
<dfn>Partial TD</dfn>
</dt>
<dd>
A <a>Partial TD</a> is an object that follows the same hierarchical structure of the <a>TD</a> information model,
but it is not required to contain all the mandatory elements.
<p>
Note: An example for the usage of a <a>Partial TD</a> is in <a>WoT Scripting API</a>,
where it is used as input for the creation of <a>Exposed Things</a>.
</p></dd>
<dt>
<dfn class="lint-ignore">Privacy</dfn>
</dt>
<dd>Freedom from intrusion into the private life or affairs of an individual when that intrusion results from
undue or illegal gathering and use of data about that individual.
We use the same definition as [[ISO-IEC-2382]].
See also <a>Personally Identifiable Information</a> and <a>Security</a>,
as well as other related definitions in [[ISO-IEC-29100]].
</dd>
<dt>
<dfn>Private Security Data</dfn>
</dt>
<dd>
Private Security Data is that component of a Thing's <a>Security Configuration</a> that is
kept secret and is not shared with other devices or users. An example would be private keys in a PKI
system. Ideally such data is stored in a separate memory inaccessible to the application
and is only used via abstract operations, such as signing, that do not reveal the secret
information even to the application using it.</dd>
<dt>
<dfn>Producer</dfn>
</dt>
<dd>An entity that can create WoT Thing Descriptions
for a specific Thing.</dd>
<dt>
<dfn>Profile</dfn>
</dt>
<dd>A technical specification which provides a set of assertions such that any <a>Consumer</a>
which conforms with the those assertions is out-of-the-box interoperable with any <a>Thing</a>
which also conforms with those assertions.
</dd>
<dt>
<dfn>Property</dfn>
</dt>
<dd>An Interaction Affordance that exposes state of the Thing.
This state can then be retrieved (read) and optionally updated (write).
Things can also choose to make Properties observable by notifying <a>Consumers</a>
about a state change.</dd>
<dt>
<dfn data-lt="WoT Protocol Binding">Protocol Binding</dfn>
</dt>
<dd>The mapping from an Interaction Affordance to concrete messages of a specific protocol,
thereby informing <a>Consumers</a> how to activate the <a>Interaction Affordance</a>.
W3C WoT serializes Protocol Bindings as <a>hypermedia controls</a>.</dd>
<dt>
<dfn>Public Security Metadata</dfn>
</dt>
<dd>
Public Security Metadata is that component of a Thing's <a>Security Configuration</a> which
describes the security mechanisms and access rights necessary to access a Thing.
It does not include any secret information or concrete data (including public keys), and does
not by itself, provide access to the Thing. Instead, it describes the mechanisms by which access
may be obtained by authorized users, including how they must authenticate themselves.
</dd>
<dt>
<dfn data-lt="WoT Registrant" class="lint-ignore">Registrant</dfn>
</dt>
<dd>An entity which registers a <a>Thing Description</a>
with a <a>Thing Description Directory</a>.
This entity may or may not be the <a>Thing</a> that
the registered <a>Thing Description</a> describes.
</dd>
<dt>
<dfn>Security</dfn>
</dt>
<dd>Preservation of the confidentiality, integrity and availability of information.
Properties such as authenticity, accountability, non-repudiation, and reliability may also be involved.
This definition is adapted from the definition of <i>Information Security</i> in [[ISO-IEC-27000]], which
also includes additional definitions of each of the more specific properties mentioned.
Please refer to this document for other related definitions.
We additionally note that it is desirable that these properties be maintained both in normal operation
and when the system is subject to attack.
</dd>
<dt>
<dfn>Security Configuration</dfn>
</dt>
<dd>The combination of Public Security Metadata, Private Security Data, and any other configuration
information (such as public keys) necessary to operationally configure the security mechanisms of a Thing.</dd>
<dt>
<dfn>Service</dfn>
</dt>
<dd>A Service is a software entity that has a network interface.
Services can be described by a <a>Thing Description</a> and are a kind of <a>Thing</a>.
See also <a>Virtual Thing</a>.
Compare with <a>Device</a>.</dd>
<dt>
<dfn>Servient</dfn>
</dt>
<dd>A software stack that implements the WoT building
blocks. A Servient can host and expose Things and/or host Consumers that consume Things.
Servients can support multiple Protocol Bindings to enable
interaction with different IoT platforms.</dd>
<dt>
<dfn>Shadow</dfn>
</dt>
<dd>A Shadow is a <a>Virtual Thing</a> that
maintains a copy of the state and mediates interactions with another
<a>Thing</a>.
A Shadow aims to achieve eventual consistency with the state
of the Thing it represents.
If a Shadow has more functionality than simply mirroring state
it may be better to refer to it as a <a>Digital Twin</a>.
</dd>
<dt>
<dfn>Subprotocol</dfn>
</dt>
<dd>An extension mechanism to a transport protocol that
must be known to interact successfully.
An example is long polling for HTTP.</dd>
<dt>
<dfn class="lint-ignore">System</dfn>
</dt>
<dd>An entity consisting of multiple interacting components.</dd>
<dt>
<dfn>TD</dfn>
</dt>
<dd>Short for <a>WoT Thing Description</a>.</dd>
<dt>
<dfn>TDD</dfn>
</dt>
<dd>Short for <a>WoT Thing Description Directory</a>.</dd>
<dt>
<dfn class="lint-ignore">TD Vocabulary</dfn>
</dt>
<dd>A Linked Data vocabulary controlled by W3C WoT to
tag the metadata of Things in the WoT Thing Description
including communication metadata of WoT Binding
Templates.</dd>
<dt>
<dfn class="lint-ignore">TD Context Extension</dfn>
</dt>
<dd>A mechanism to extend <a>Thing Descriptions</a> with additional <a>Vocabulary
Terms</a> using <code>@context</code> as specified in JSON-LD[[?JSON-LD11]].
It is the basis for semantic annotations and extensions to core
mechanisms such as Protocol Bindings, Security Schemes, and Data Schemas.</dd>
<dt>
<dfn class="lint-ignore">TD Server</dfn>
</dt>
<dd>Short for <a>Thing Description Server</a>.</dd>
<dt>
<dfn>Thing</dfn> or <dfn>Web Thing</dfn>
</dt>
<dd>An abstraction of a physical or a virtual entity
whose metadata and interfaces are described by a WoT
Thing Description, whereas a virtual entity is the
composition of one or more Things.</dd>
<dt>
<dfn data-lt="WoT Thing Description Directory">Thing Description Directory</dfn>
</dt>
<dd>A directory service for TDs that provides a Web
interface to register TDs and look them up
(e.g., using JSONPath or SPARQL queries).
A recommended API and feature set is defined in [[WOT-DISCOVERY]], and is
used as an optional part of the <a>WoT Discovery</a> process.
</dd>
<dt>
<dfn>TD Fragment</dfn>
</dt>
<dd>
A <a>TD Fragment</a> is a substructure of the data model of a TD.
It is a valid object structure that can be validated syntactically against a part of the TD information model
defined in chapter 5 of the <a>Thing Description</a>specification, however the fragment may omit some context that allows full validation.
</dd>
<dt>
<dfn data-lt="WoT Thing Description Server">Thing Description Server</dfn>
</dt>
<dd>A Thing Description Server is a web resource, addressed by a URL, that can provide
a Thing Description when accessed.
Its requirements are defined in [[WOT-DISCOVERY]], and is
used as an optional part of the <a>WoT Discovery</a> process.
</dd>
<dt>
<dfn data-lt="WoT Thing Model">Thing Model</dfn>
</dt>
<dd>A <a>Thing Model</a> is a description for a class of Things that have the same
capabilities. It describes the <a>Properties</a>, <a>Actions</a>, and <a>Events</a> and common metadata that are
shared for an entire group of <a>Things</a>. Compared to a Thing Description, a Thing Model does not contain enough
information to identify or interact with a Thing instance.</dd>
<dt>
<dfn>Transport Protocol</dfn>
</dt>
<dd>The underlying, standardized application layer
protocol without application-specific requirements or
constraints on options or subprotocol mechanisms.
Examples are HTTP, CoAP, or MQTT.
</dd>
<dt>
<dfn>Trusted Environment</dfn>
</dt>
<dd>Set of devices that assume each other's claims of
identity are authentic without proof and allow relatively unrestricted
access to one another over a common protected network.
</dd>
<dt>
<dfn>Virtual Thing</dfn>
</dt>
<dd>A <a>Service</a> that
represents,
augments the functionality of,
provides an improved interface to,
or
stands in place of
one or more other <a>Things</a>.
A Virtual Thing will often act as an <a>Intermediary</a>.
Examples include <a>Shadows</a> and <a>Digital Twins</a>.
</dd>
<dt>
<dfn>Vocabulary</dfn>
</dt>
<dd>
A collection of <a>Vocabulary Terms</a>, identified by a namespace IRI.
</dd>
<dt>
<dfn>Term</dfn>
and
<dfn>Vocabulary Term</dfn>
</dt>
<dd>
A character string. When a <a>Term</a> is part of a <a>Vocabulary</a>, i.e., prefixed by
a namespace IRI[[RFC3987]], it is called a <a>Vocabulary Term</a>. For the sake of readability,
<a>Vocabulary Terms</a> present in this document are always written in a compact
form and not as full IRIs.
</dd>
<dt>
<dfn>WoT Interface</dfn>
</dt>
<dd>The network-facing interface of a Thing
that is described by a WoT Thing Description.</dd>
<dt>
<dfn>WoT Profile</dfn>
</dt>
<dd>Synonym for <a>Profile</a></dd>
<dt>
<dfn>WoT Runtime</dfn>
</dt>
<dd>A runtime system that maintains an execution
environment for applications, and is able to expose and/or
consume Things, to process WoT Thing Descriptions, to maintain Security
Configurations, and to interface with Protocol Binding implementations.
A WoT Runtime may have a custom API or use the optional WoT Scripting API.</dd>
<dt>
<dfn>WoT Scripting API</dfn>
</dt>
<dd>The application-facing programming interface
provided by a Servient in order to ease
the implementation of behavior or applications running in a WoT
Runtime. It is comparable to the Web browser APIs.
The WoT Scripting API is an optional building block for W3C WoT.</dd>
<dt>
<dfn class="lint-ignore">WoT Servient</dfn>
</dt>
<dd>Synonym for Servient.</dd>
<dt>
<dfn>WoT Thing Description</dfn> or <dfn>Thing Description</dfn>
</dt>
<dd>Structured data describing a Thing. A WoT Thing Description comprises
general metadata, domain-specific metadata, Interaction Affordances
(which include the supported Protocol Bindings), and links to related Things.
The WoT Thing Description format is the central building block of W3C WoT.</dd>
</dl>
<!-- Device categories -->
<section id="device-categories">
<h2>Device Categories</h2>
<p>
In a deployment of WoT conforming to the <a href="https://www.w3.org/TR/wot-architecture/#architecture-abstract">WoT Abstract Architecture</a>
we see a variety of different device types.
They range (sorted in the order of footprint and capabilities)
from small embedded <em>node</em> devices to <em>gateways</em> or <em>hubs</em>
to powerful <em>edge</em> devices and <em>cloud</em> servers.
Interoperability between these devices implies that a core set of features and functionalities
is available on <em>all</em> of them.
</p>
<p>
The following device categories describe the footprint and characteristics of
typical representatives of these classes.
This is used to identify the possible features and use cases for these device classes.
</p>
<p>
These categories are aligned with the classes defined by the IETF [[RFC7228]] for constrained devices,
however the classes have been extended to larger devices and
bounds on typical sizes of RAM and Flash/ROM are provided.
Memory and storage size are both easier to quantify and more limiting than performance,
so that is the basis of this categorization.
This is not a strict categorization.
Categories may overlap and not all memory may be available for user applications.
</p>
<table class="def">
<tr>
<th>Category</th>
<th>data size (RAM)</th>
<th>code size (Flash, ROM, ...)</th>
<th>Typical Representative</th>
<th>Remarks, typical application scenarios</th>
</tr>
<tr>
<td>Class-0, C0</td>
<td><< 10 KiB</td>
<td><< 100 KiB</td>
<td>small footprint microcontrollers</td>
<td>Sensor nodes without secure communication</td>
</tr>
<tr>
<td>Class-1, C1</td>
<td>~ 10 KiB</td>
<td>~ 100 KiB</td>
<td>microcontrollers</td> <!-- could just call this a "node" or "basic node" -->
<td>Sensors that typically supports secure communication protocols such as TLS, DTLS</td>
</tr><tr>
<td>Class-2, C2</td>
<td>~ 64 KiB</td>