forked from w3c/wot-architecture
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
3840 lines (3748 loc) · 191 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>
<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,
group: "wg/wot",
specStatus: "FPWD",
shortName: "wot-architecture",
copyrightStart: 2017,
wgPublicList: "public-wot-wg",
github: {
repoURL: "https://github.com/w3c/wot-architecture",
branch: "master"
},
previousPublishDate: "2019-05-16",
previousMaturity: "CR",
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: "Toru Kawaguchi",
w3cid: "79307",
company: "Panasonic Corp.",
companyURL: "https://www.panasonic.com/"
}, {
name: "Kunihiko Toumura",
w3cid: "83488",
company: "Hitachi, Ltd.",
companyURL: "https://www.hitachi.com/"
}, {
name: "Kazuo Kajimoto",
note: "Former Editor, when at Panasonic"
}],
otherLinks: [
{
key: "Contributors",
data: [{
value: "In the GitHub repository",
href: "https://github.com/w3c/wot-architecture/graphs/contributors"
}]
}],
localBiblio: {
"CoRE-RD": {
href: "https://tools.ietf.org/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/whitepaper/pdf/iecWP-futurefactory-LR-en.pdf",
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"
},
"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: "http://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://w3c.github.io/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: "http://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://tools.ietf.org/html/draft-hartke-t2trg-coral",
title: "The Constrained RESTful Application Language (CoRAL)",
authors: ["Klaus Hartke"],
publisher: "IETF",
status: "Internet-Draft",
date: " March 2019"
},
"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: "http://dret.net/netdret/docs/wilde-irep07-015-restful-things.pdf",
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:v1: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-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 type="text/css">
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) is intended to enable
interoperability across IoT platforms and application
domains.
Overall, the goal of the WoT is to preserve and complement existing
IoT standards and solutions. In general, the W3C WoT architecture is
designed to describe what exists rather than to prescribe
what to implement.
</p>
<p>This <em>WoT Architecture</em> specification describes the abstract
architecture for the W3C Web of Things.
This abstract architecture is based on a
set of requirements that were derived from use cases for
multiple application domains as described in [[WOT-USE-CASES-REQUIREMENTS]].
A set of 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 design.
However, there is an
<a href="https://w3c.github.io/wot-thing-description/testing/report.html">Implementation Report</a>
that describes a set of concrete implementations based on the associated <em>WoT Thing Description</em>
specification.
These are implementations following the W3C Web of Things architecture.
</p>
</section>
<section id="introduction">
<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>This 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.
The building blocks are defined and described in detail in separate specifications.
However, 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) 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 the WoT abstract architecture does not fully specify.
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 section <a href="#sec-security-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 normatively define 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 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
possible concrete implementations in
<a href="#sec-servient-implementation"></a>,
</li>
<li>informative examples of possible deployment scenarios in <a href="#sec-deployment-scenario"></a>,
</li>
<li>and a discussion, at a high level, of
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>.
</li>
</ul>
<p>Additional requirements, use cases, conceptual features and new building blocks will be
addressed in a future revision of this 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>
<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 Binding Templates">Binding
Templates</dfn>
</dt>
<dd>A re-usable collection of blueprints for the
communication with different IoT platforms.
The blueprints provide information to map Interaction Affordances
to platform-specific messages through WoT Thing Description
as well as implementation notes for the required protocol stacks
or dedicated communication drivers.</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>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>Digital Twin</dfn>
</dt>
<dd>A digital twin is a virtual representation of a
device or a group of devices that resides on a cloud
or edge node. It can be used to represent
real-world devices which may not be continuously online,
or to run simulations of new applications and services,
before they get deployed to the real devices.</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 gateways, routers, switches, multiplexers, and a
variety of other access devices.</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>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>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>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>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>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 Security Configuration 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>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 pushing the new
state after a 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 Consumers how to activate the Interaction Affordance.
W3C WoT serializes Protocol Bindings as hypermedia controls.</dd>
<dt>
<dfn>Public Security Metadata</dfn>
</dt>
<dd>
Public Security Metadata is that component of a Thing's Security Configuration 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>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>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>Subprotocol</dfn>
</dt>
<dd>An extension mechanism to a transfer protocol that
must be known to interact successfully.
An example is long polling for HTTP.</dd>
<dt>
<dfn>TD</dfn>
</dt>
<dd>Short for WoT Thing Description.</dd>
<dt>
<dfn>TD Vocabulary</dfn>
</dt>
<dd>A controlled Linked Data vocabulary by W3C WoT to
tag the metadata of Things in the WoT Thing Description
including communication metadata of WoT Binding
Templates.</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>Thing Directory</dfn>
</dt>
<dd>A directory service for TDs that provides a Web
interface to register TDs (similar to [[?CoRE-RD]]) and look them up
(e.g., using SPARQL queries or the CoRE RD lookup interface [[?CoRE-RD]]).</dd>
<dt>
<dfn>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>Transfer 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>Virtual Thing</dfn>
</dt>
<dd>An instance of a Thing that represents a Thing that is located
on another system component.</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 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>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>
<section class="ednote">
<h2>TODO: Need to add definitions for discovery, thing models, profiles, lifecycle.</h2>
</section>
</section>
<section id="sec-application-domains" class="informative">
<h2>Application Domains (Verticals)</h2>
<p>
This section presents the application domains and use cases
targeted by the W3C WoT and which are used to derive the
abstract architecture discussed in <a href="#sec-building-blocks"></a>.
</p>
<p>The Web of Things architecture does not put any
limitations on use cases and application domains. Various
application domains have been considered to collect common
patterns that have to be satisfied by the abstract
architecture.</p>
<p>The following sections are not exhaustive. Rather they
serve as illustrations, where connected things can provide
additional benefit or enable new scenarios.</p>
<section class="ednote" title="Use Cases">
<h2>Note:</h2>
WoT use cases and requirements are being collected and organized in the
<a href="https://github.com/w3c/wot-a">https://github.com/w3c/wot-usecases</a> repository.
A detailed <em>Use Cases and Requirements</em> document is being prepared and will be published as a W3C Note [[WOT-USE-CASES-REQUIREMENTS]].
A draft is available at <a href="https://w3c.github.io/wot-usecases/">https://w3c.github.io/wot-usecases/</a>.
</section>
<section id="consumer-use-cases">
<h3>Consumer</h3>
<p>In the consumer space there are multiple assets
that benefit from being connected. Lights and air
conditioners can be turned off based on room
occupancy. Window blinds can be closed automatically
based on weather conditions and presence. Energy and
other resource consumption can be optimized based on
usage patterns and predictions.</p>
<p>The consumer use cases in this section includes
Smart Home use case.</p>
<p>
<a href="#smart-home"></a> shows an example of a
Smart Home. In this case, gateways are connected to
edge devices such as sensors, cameras and home
appliances through corresponding local communication
protocols such as KNX, ECHONET, ZigBee, DECT ULE and
Wi-SUN. Multiple gateways can exist in one home,
while each gateway can support multiple local
protocols.
</p>
<p>Gateways can be connected to the cloud through
the internet, while some appliances can be connected
to the cloud directly. Services running in the cloud
collect data from edge devices and analyze the data,
then provide value to users through the edge devices
and other UX devices.</p>
<figure id="smart-home">
<img src="images/wot-use-cases/smart-home.png" srcset="images/wot-use-cases/smart-home.svg"
class="wot-arch-diagram" alt="smart home use case" />
<figcaption>Smart Home</figcaption>
</figure>
<p>Smart home provides consumer benefits such as
remote access and control, voice control and home
automation. Smart home also enables device
manufacturers to monitor and maintain devices
remotely. Smart home can realize value added
services such as energy management and security
surveillance.</p>
</section>
<section id="industrial-iot-usecases">
<h3>Industrial</h3>
<p>
The industrial use cases in this section are
applicable to different industry verticals. <br />
Due to the nature of overlaps in the application
scenarios, different verticals have similar use
cases.
</p>
<section>
<h4>Example: Smart Factory</h4>
<p>
<a href="#smart-factory"></a> shows an example
of a Smart Factory. In this case, field-level,
cell and line controllers automate different
factory equipment based on industrial
communication protocols such as PROFINET,
Modbus, OPC UA TSN, EtherCAT, or CAN. An
industrial edge device collects selected data
from various controllers and makes it available
to a cloud backend service, e.g., for remote
monitoring via a dashboard or analyzes it for
preventive maintenance.
</p>
<figure id="smart-factory">
<img src="images/wot-use-cases/smart_factory_new.png" srcset="images/wot-use-cases/smart_factory_new.svg"
class="wot-arch-diagram" alt="smart factory use case" />
<figcaption>Smart Factory</figcaption>
</figure>
</section>
<p>Smart factories require advanced monitoring of
the connected manufacturing equipment as well of the
manufactured products. They benefit from predictions
of machine failures and early discovery of anomalies
to prevent costly downtime and maintenance efforts.</p>
<p>Additionally, monitoring of connected
manufacturing equipment and the environment at the
production facility for the presence of poisonous
gases, excessive noise or heat increases the safety
of the workers and reduces the risks of incidents or
accidents.</p>
<p>Real-time monitoring and KPI calculations of
production equipment helps to detect productivity
problems and optimize the supply chain.</p>
</section>
<section id="sec-transportationlogistics">
<h4 id="transportationlogistics">Transportation
& Logistics</h4>
<p>Monitoring of vehicles, fuel costs, maintenance
needs and assignments helps to optimize the full
utilization of the vehicle fleet.</p>
<p>Shipments can be tracked to be en-route to ensure
consistent quality and condition of the transported
goods. This is especially useful to assert the
integrity of the cold-chain from warehouses to
refrigerated trucks to delivery.</p>
<p>Centralized monitoring and management of stock in
warehouses and yards can prevent out of stock and
excessive stock situations.</p>
</section>
<section id="sec-utilities">
<h4 id="utilities">Utilities</h4>
<p>Automated reading of residential and C&I
(Commercial and Industrial) meters, and billing
offers continuous insights into resource consumption
and potential bottlenecks.</p>
<p>Monitoring the condition and output of
distributed renewable energy generation equipment
enables optimization of distributed energy
resources.</p>
<p>Monitoring and remote-controlling of distribution
equipment helps to automate the distribution
process.</p>
<p>Continuous monitoring of generation and
distribution infrastructure is improving safety of
utilities crew in the field.</p>
</section>
<section id="sec-oilandgas">
<h4 id="oilandgas">Oil and Gas</h4>
<p>Offshore platform monitoring, leakage detection
and prediction of pipelines as well as monitoring
and controlling the levels in tanks and reservoirs
helps to improve the industrial safety for the
workforce as well as for the environment.</p>
<p>Automated calculation of a distributed stock
through various storage tanks and delivery
pipes/trucks allows for improved planning and
resource optimization.</p>
</section>
<section id="sec-insurance">
<h4 id="insurance">Insurance</h4>
<p>Proactive Asset Monitoring of high value assets
such as connected structures, fleet vehicles, etc.
mitigates the risk of severe damage and high costs
due to predictions and early detection of incidents.</p>
<p>Usage based insurance can be offered with usage
tracking and customized insurance policies.</p>
<p>Predictive weather monitoring and re-routing
fleet vehicles to covered garages can limit loss due
to hail damage, tree damage.</p>
</section>
<section id="sec-engineering-and-construction">
<h4 id="engineering-and-construction">Engineering
and Construction</h4>
<p>Monitoring for industrial safety reduces the
risks of security hazards. Monitoring of assets at
construction site can prevent damage and loss.</p>
</section>
<section id="sec-agriculture">
<h3 id="agriculture">Agriculture</h3>
<p>Soil condition monitoring and creating optimal
plans for watering, fertilizing as well as
monitoring the produce conditions optimize the
quality and output of agricultural produce.</p>
</section>
<section id="sec-healthcare">
<h3 id="healthcare">Healthcare</h3>
<p>Data collection and analytics of clinical trial
data helps to gain insights into new areas.</p>
<p>Remote patient monitoring mitigates the risk of
undetected critical situations for elderly people
and patients after hospitalization.</p>
</section>
<section id="sec-environmentmonitoring">
<h3 id="environmentmonitoring">Environment
Monitoring</h3>
<p>Environment monitoring typically relies on a lot
of distributed sensors that send their measurement
data to common gateways, edge devices and cloud
services.</p>
<p>Monitoring of air pollution, water pollution and
other environmental risk factors such as fine dust,
ozone, volatile organic compound, radioactivity,
temperature, humidity to detect critical environment
conditions can prevent unrecoverable health or
environment damages.</p>
</section>
<section id="sec-smart-cities">
<h3 id="smartcities">Smart Cities</h3>
<p>Monitoring of Bridges, Dams, Levees, Canals for
material condition, deterioration, vibrations
discovers maintenance repair work and prevents
significant damage. Monitoring of highways and
providing appropriate signage ensures optimized
traffic flow.</p>
<p>Smart Parking is optimizing and tracking the
usage and availability of parking spaces and
automates billing/reservations.</p>
<p>Smart control of street lights based on presence
detection, weather predictions, etc. reduces cost.</p>
<p>Garbage containers can be monitored to optimize
the waste management and the trash collection route.</p>
</section>
<section id="sec-smart-buildings">
<h3 id="smartbuildings">Smart Buildings</h3>
<p>Monitoring the energy usage throughout the
building helps to optimize resource consumption and
reduce waste.</p>
<p>Monitoring the equipment in the buildings such as
HVAC, Elevators, etc. and fixing problems early
improves the satisfaction of occupants.</p>
</section>
<section id="sec-connected-car">
<h3 id="connectedcar">Connected Car</h3>
<p>Monitoring of operation status, prediction of
service needs optimizes maintenance needs and costs.
Driver safety is enhanced with notifications of an
early warning system for critical road and traffic
conditions.</p>
<section id="connected-car-example">
<h4 id="connectedcar-example">Connected Car
Example</h4>
<p>
<a href="#connected-car"></a> shows an example
of a Connected Car. In this case, a gateway
connects to car components through CAN and to
the car navigation system through a proprietary
interface. Services running in the cloud collect
data pushed from car components and analyze the
data from multiple cars to determine traffic
patterns. The gateway can also consume cloud
services, in this case, to get traffic data and
show it to the driver through the car navigation
system.
</p>
<figure id="connected-car">
<img src="images/wot-use-cases/connected-car.png" srcset="images/wot-use-cases/connected-car.svg"
class="wot-arch-diagram" alt="connected car use case" />
<figcaption>Connected Car</figcaption>
</figure>
</section>
</section>
</section>
<section id="sec-common-deployment-patterns" class="informative">
<h1>System Topoplogies (Horizontals)</h1>
<p>
This section introduces common deployment patterns that
illustrate how devices/things interact with controllers,
other devices, agents and servers.
In this section, we use the term <em>client role</em> as an
initiator of a transport protocol, and the term </em>server role</em>
as a passive component of a transport protocol.
This does not imply prescribing a specific role on any system component.
A device can be in a <em>client</em> and <em>server</em> role simultaneously.
</p>
<p>
One example of this dual role is a sensor, that registers itself with a cloud service
and regularly sends sensor readings to the cloud.
In the response messages the cloud can adjust the transmission rate of the
sensor's messages or select specific sensor attributes, that are to be transmitted in future messages.
Since the sensor registers itself with the cloud and initiates connections, it is in the 'client' role.
However, since it also reacts to requests, that are transmitted in response messages, it also fulfills a 'server'
role.
</p>
<p>
The following sections illustrate the roles, tasks, and use case patterns with increasing complexity.
They are not exhaustive and are presented to motivate for the WoT architecture and building blocks
that are defined in later sections of this specification.
</p>
<section id="device-controllers">
<h3>Device Controllers</h3>
<p>
The first use case is a local device controlled by a
user-operated remote controller as depicted in <a href="#smart-home-device"></a>. A remote
controller can access an electronic appliance
through the local home network directly. In this
case, the remote controller can be implemented by a
browser or native application.
</p>
<p>In this pattern, at least one device like the
electronic appliance has a server role that can
accept a request from the other devices and responds
to them, and sometimes initiates a mechanical
action. The other device like the remote controller
has a client role that can send a message with a
request, like to read a sensor value or to turn on
the device.
Moreover, to emit a current state or event notification of a device,
the device may have a client role that can send a message
to another device, which has server roles.
</p>
<figure id="smart-home-device">
<img src="images/wot-use-cases/smart-home-device.png" srcset="images/wot-use-cases/smart-home-device.svg"
class="wot-arch-diagram" alt="smart home device use case" />
<figcaption>Device Control</figcaption>
</figure>
</section>
<section>
<h3>Thing-to-Thing</h3>
<p>
<a href="#smart-home-t2t"></a> shows an example of a
direct Thing-to-Thing interaction. The scenario is
as follows: a sensor detects a change of the room
condition, for example the temperature exceeding a
threshold, and issues a control message like "turn
on" to the electronic appliance. The sensor unit can
issue some trigger messages to other devices.
</p>
<p>In this case, when two devices that have server
roles are connected, at least one device must have
also a client role that issues a message to the
other to actuate or notify.</p>
<figure id="smart-home-t2t">
<img src="images/wot-use-cases/smart-home-t2t.png" srcset="images/wot-use-cases/smart-home-t2t.svg"
class="wot-arch-diagram" alt="smart home t2t use case" />
<figcaption>Control Agent</figcaption>
</figure>
</section>
<section>
<h3>Remote Access</h3>
<p>
This use case contains a mobile remote controller
(e.g., on a smartphone) as shown in <a href="#smart-home-multi"></a>. The remote
controller can switch between different network
connections and protocols, e.g., between a cellular