forked from schemaorg/schemaorg
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathiot-gettingstarted.html
1053 lines (994 loc) · 68.2 KB
/
iot-gettingstarted.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>
<head>
<title>IoT and Schema.org: Getting Started</title>
<meta charset="UTF-8">
<script type="text/javascript" src="https://www.corp.google.com/style/prettify.js"></script>
<style>
body {
margin: 2em;
margin-left: 5em;
margin-right: 25em;
}
table {
border-collapse:collapse;
border:1px solid #ccc;
}
tbody, tr, td {
border:inherit;
border-collapse:inherit;
}
td {
padding:5px;
}
.style0 {
border:1px solid #000000
}
.code {
font-family: monospace;
white-space: pre;
}
</style>
</head>
<body onload="prettyPrint();">
<h2>IoT and Schema.org: Getting Started</h2>
<p><b>STATUS</b>: Work in progress document targetting schema.org v3.2 release.</p>
<p>Editor: Dan Brickley <<a href="mailto:[email protected]">[email protected]</a>></p>
<p>Contributors (alphabetically): <a href="http://www.synergylabs.org/yuvraj" >Yuvraj Agarwal</a>, <a href="https://nl.linkedin.com/in/lauradaniele">Laura Daniele</a>, <a href="http://joshuagluck.com/">Joshua Gluck</a>, R.V. Guha, <a href="http://research.google.com/pubs/TedHardie.html">Ted Hardie</a>, <a href="https://jbkoh.wordpress.com/">Jason Koh</a>, Ari Keränen, <a href="http://www.theinternetofthings.eu/michael-koster">Michael Koster</a>,<a href="http://www.theinternetofthings.eu/michael-koster">Dave Raggett</a>, <a href="http://maxsenges.com/">Max Senges</a></p>
<p>This short document introduces a proposal for the schema.org community to begin work in the "Internet of Things" (IoT) area, building on schema.org's existing success to provide an approach to semantic interoperability that bridges IoT and non-IoT applications. It outlines some possible application areas where schema.org-oriented structured data vocabularies may be useful, gives some examples of related schemas and related standards efforts, before proposing some practical steps for collaborative work.</p>
<h3>The case for IoT + Schema.org</h3>
<p>The <i>Internet of Things</i> (henceforth, IoT) field covers a huge range of scenarios in which connected devices, sensors, beacons and other electronic components exchange various kinds of data using Internet, Web and other (e.g. Bluetooth) technology. Much of this structured data describes real world entities, their properties and relationships, in a manner that could benefit from the use of widely adopted, application independent, non-proprietary schemas such as those <a href="http://queue.acm.org/detail.cfm?id=2857276">developed at schema.org </a>for the Web. Adopting and improving schema.org's vocabularies for IoT can reduce needless duplication and focus attention on innovation rather than replication. Schema.org's approach is open, organic and community based, and is supported by a technical design that includes several extensibility mechanisms designed to support decentralization without encouraging fragmentation.</p>
<h4>The view from schema.org</h4>
<p>This section is oriented towards readers familiar with schema.org and its mechanisms.</p>
<p>Typical schema.org "extension proposals" usually suggest a handful of new types of things to add to schema.org's definitions, as well as properties typical of those kinds of objects. This proposal is quite different, it is simply to begin a collaboration in these areas. Instead of proposing a specific set of schema definitions, we propose a broader set of collaborations whose outcomes could include activities such as:</p>
<ul>
<li>Development of mappings between diverse application-oriented, platform-oriented, and schema.org schemas, via a shared datamodel. </li>
<li>Evolution and documentation of a common data-model (triples/graphs e.g. RDF) that can capture diverse schemas.</li>
<li>Distributed publication of "external extension" schemas that build on the schema.org core and a shared datamodel (e.g. see <a href="http://gs1.org/voc/">http://gs1.org/voc/</a>).</li>
<li>Hosted Extensions - published as part of the schema.org site using subdomains, for example see <a href="http://auto.schema.org/">http://auto.schema.org/</a> or <a href="http://health-lifesci.schema.org/">http://health-lifesci.schema.org/</a></li>
<li>Additions and changes to core schema.org terms (e.g. hypothetical addition of a basic type like "Device", or improvements around measurements, actions and events)</li>
<li>Collaboration on improved examples, documentation, sample code etc. relating to IoT.</li>
</ul>
<p>For simplicity we will refer to all of these collaboration possibilities as "IoT + schema.org" or "iot.schema.org", and suggest the establishment of a "hosted schema.org extension" website at that subdomain following the existing pattern (i.e. alongside bib.schema.org, auto.schema.org, health-lifesci.schema.org, etc.). Given the nature of IoT, we expect iot.schema.org to serve as an entry point to a diverse set of activities, as well as providing a home for any IoT-specific vocabulary that emerges from collaborations. We expect that many IoT-related schema.org scenarios will draw upon vocabulary that may be more appropriate for the schema.org core, or for domain-oriented areas such as health-lifesci.schema.org.</p>
<h4>The view from IoT</h4>
<p>This section is oriented towards readers unfamiliar with schema.org and its mechanisms.</p>
<p>Readers unfamiliar with schema.org are encouraged to read the recent ACM Magazine overview (<a href="http://queue.acm.org/detail.cfm?id=2857276">http://queue.acm.org/detail.cfm?id=2857276</a>) for a more detailed overview of the project. We provide here a very brief overview.</p>
<p>Schema.org started 5 years ago by providing a vendor-neutral community developed vocabulary for structured data on the Web. Today, Schema.org markup is very widely used, with tens of millions of mainstream Web sites routinely including schema.org markup within page content. Schema.org has proved extremely beneficial to Web publishers because it improves the presentation of their content within search engines (or their mail messages within e.g. google now / gmail, Cortana etc).</p>
<p>Schema.org can extend its vocabulary to IoT devices and services in the same vendor-neutral, community-developed fashion. Bringing schema.org to the IoT environment raises a number of considerations beyond simple modeling tasks. We begin with a recap of the motivations for using schema.org with IoT. Some of the benefits of IoT applications using schema.org vocabulary for connected devices and services are that they build on a large existing base, that they do not draw an unsustainable distinction between "IoT" and "non-IoT" scenarios/applications, and that they help decouple data structures from the tools, products and applications that use the data.</p>
<h3>Use cases and Scenarios</h3>
<p>We do not here provide an exhaustive survey of indicative IoT scenarios for which schema.org may be relevant. Instead we give a short selection of situations where the schema.org project could contribute in an IoT context.</p>
<ul>
<li>User data portability<ul>
<li>E.g. sensor-based data from consumer devices such as smart scales. Schema.org has existing vocabulary ("Dataset" and nearby) for describing the general characteristics of datasets, and ongoing collaboration (e.g. health-lifesci.schema.org) for fine-grained schema detail in specific domains. These should help improve discovery and use of data regardless of the specific hardware or branded product that generated the data. For example, personal healthcare applications should not need to care which weighing scales a user has. Using vendor-independent schemas (such as schema.org's) can help decouple these concerns.</ul></li>
<li>Beacons and the description of the physical environment<ul>
<li>Initiatives such as physical-web.org are increasingly being used to attach unique identifiers, often Web URIs, to real world objects such as local businesses, bus stops, museum artifacts etc. Schema.org already contains a lot of relevant and widely used vocabulary, e.g. for describing a local business, its opening hours etc., as well as restaurants, menus, food preferences. Similarly, for various aspects of travel notions such as <a href="http://schema.org/BusStop">http://schema.org/BusStop</a> <a href="http://schema.org/BusStop">are available</a>. For example, PhysicalWeb beacons are already being <a href="http://marketingland.com/london-buses-test-first-consumer-experience-physical-web-170529">deployed</a> on London bus stops. Schema.org is already discussing extensions for documenting the physical accessibility of such places, e.g. wheelchair ramps or availability of braille menus. Many of these applications areas might be encountered in a "smart cities" context.</ul></li>
<li>"Smart Assistants"<ul>
<li>The recent industry trend towards voice-activated smart/intelligent personalized "assistants" such as Microsoft Cortana, Apple's Siri, Amazon Alexa, Google Now / Google Home etc. is a development that bridges Web search scenarios with various IoT and transaction-oriented situations, moving beyond information access towards systems that mediate change e.g. various kinds of remote control. For example both Google Now and Cortana already use schema.org data extracted from email to provide assistance and user interfaces around activities such as travel e.g. flights (see: <a href="https://developers.google.com/gmail/markup/">gmail docs</a>, <a href="https://msdn.microsoft.com/en-us/library/dn632191.aspx">cortana docs</a>). Such considerations already <a href="http://blog.schema.org/2014/04/announcing-schemaorg-actions.html">motivated the design</a> of schema.org's <a href="http://schema.org/docs/actions.html">"Action" mechanism</a> and provides a foundation for handling various transaction-oriented situations within schema.org. Schema.org already has substantial terminology in this area and could naturally be extended for in-the-home actions for devices such as lighting and indoor environmental control. The combination of information from the physical world, using IoT, and the virtual world, such as email, can help the development of more capable Smart Assistants. </ul></li>
<li>On-device content. <ul>
<li>Schema.org has extensive existing vocabulary that covers broadcast and archived television, radio and music content. These schemas have been developed in collaboration with BBC, European Broadcasting Union (EBU), MusicBrainz and others. Many smart home devices will contain content such as personal or purchased media, or metadata relating to files, events, streams and cloud services (e.g. streaming music providers). Schema.org's descriptive vocabulary covers much of this already.</ul></li>
<li>Sensors and the description of the physical environment.<ul>
<li>Schema.org already contains basic and sometimes quite detailed vocabulary for describing properties and relationships of places, including businesses, events and other associated entities. It does not yet, however, have much support for the kind of data coming from IoT sensors - e.g. date/time stamped temperature measurements. It is likely that patterns based largely on existing vocabulary could be agreed relatively easily, and there is scope for an extension aligned with other work such as that <a href="https://www.w3.org/2015/spatial/wiki/Main_Page#Semantic_Sensor_Network_Ontology">at W3C</a>. There is also related work on physical accessibility of places, e.g. navigation to support vision impaired users, documentation of wheelchair ramps, availability of assistive technologies, braille menus, and related considerations.</ul></li>
<li>Energy Efficiency:</li>
</ul>
<blockquote>Users can offer flexibility to the Smart Grid to manage their smart home devices by means of a Customer Energy Manager (CEM). The CEM is a logical function for optimizing energy consumption and/or production that can reside either in the home gateway or in the cloud. The interoperability of a device with other devices and with the CEM should be guaranteed regardless of their brand/manufacturer, because the user wants to be able to buy any washing machine they want and still have it communicate with the other devices that are already in their home. Some examples scenarios include the scheduling of appliances in certain modes and preferred times using power profiles to optimize energy efficiency and accommodate the user's preferences. For example, the user might want the washing done by 5:00 p.m. with least electrical power costs, or prefer to limit their own energy consumption up to a defined limit. Such scenarios suggest that there would be value in developing common schemas that can express control preferences and policies relating to energy efficiency.</blockquote>
<h3>Current Landscape</h3>
<p>We will not attempt here any kind of survey of the larger IoT industry universe and its numerous standardization efforts. Appendix A provides examples from a few related projects that share schema.org general approach (definitions of types/properties for a triples/graphs data model in the broader W3C RDF family).</p>
<p>In addition to other schema creation efforts (the focus of Appendix A) that are expressible in a schema.org-like datamodel, there are other efforts in the Web standards community with which it would be natural to coordinate and collaborate. In particular there are two efforts around W3C:</p>
<ol>
<li>Web platform API efforts, such as Battery Status API, Sensor API, TV remote controls.</li>
<li>Ongoing and proposed W3C "Web of Things" efforts. W3C has an active Interest Group already exploring and prototyping in this area. There is also a very large (but relatively inactive) Community Group, and a proposal under development for a more formal Working Group.</li>
</ol>
<p>It should also be noted that there is also considerable interest around IoT happening in an <i>Internet</i> rather than <i>Web</i> standards setting. Any schema.org initiative in this area will need to take care to engage with efforts around both W3C and IETF. For example see the <a href="https://www.iab.org/activities/workshops/iotsi/">IoT Semantic Interoperability Workshop 2016</a> and the <a href="https://www.iab.org/activities/workshops/iotsu/">Internet of Things Software Update Workshop (IoTSU)</a>. An ideal outcome would be for all schema.org's schemas to be usable (directly or via mappings) by a variety of platforms and standards in the IoT/WoT ecosystem.</p>
<h4>Governance and related Considerations</h4>
<p>At the time of writing, there is not yet any precedent for schema.org schemas being cited normatively by W3C "Recommendation-track" Working Groups, although there is no in-principle reason why this shouldn't happen so long as W3C's <a href="https://www.w3.org/2013/09/normative-references">Normative References</a> considerations are addressed to the satisfaction of the W3C Director. Schema.org has recently introduced more explicit <a href="http://schema.org/docs/howwework.html">documentation</a> of its workflow as part of discussions about whether it meets governmental needs (e.g. <a href="https://governmenttechnology.blog.gov.uk/2016/05/18/making-job-adverts-more-open/">job adverts</a>).</p>
<h4>Practical Considerations - "How it might work"</h4>
<p>Schema.org is run as an independent project, but given the overlap in technologies, expert communities and close ties to the evolution of supporting technology like JSON-LD, RDFa, HTML5, it has primarily been developed on W3C-hosted public discussion lists. Since 2015 this has been based on W3C's Community Group mechanism, see <a href="https://www.w3.org/community/">https://www.w3.org/community/</a> but it is important to understand that Schema.org is an independent initiative and that it is not governed by the official W3C Process. The schema.org "<a href="http://schema.org/docs/howwework.html">How we work</a>" provides more details, but for this document's purposes it is important also to understand that there are several layers to schema.org.</p>
<p>The most basic piece of schema.org is the core <a href="http://schema.org/docs/datamodel.html">datamodel</a>. Roughly this corresponds to W3C RDF, in that it uses a graph datamodel and relies on a dictionary of type and property definitions. Secondly, there is the core of schema.org: a collection of such definitions. Currently 500+ types, 800+ properties, and 100+ property values. Beyond the core, the project overlays several so-called "hosted" extensions, such as "auto", "bib", "health-lifesci". These add further terms, or refined definitions, on top of the core. And beyond these, in the wider Web, there are other domain-specific or dataset-specific "external extensions", the most notable of which is GS1's work at <a href="http://gs1.org/voc/">http://gs1.org/voc/</a>.</p>
<p>This combination of mechanisms provides several integration points for IoT-inspired vocabulary. Firstly, other non-schema.org vocabularies can be directly used alongside schema.org, thanks to the extensibility of the underlying formats (JSON-LD, RDFa, Microdata etc.). Secondly, there is scope for the core schema.org vocabularies to be evolved to address IoT scenarios more deeply, e.g. tweaks to definitions, clarifications or addition of modest amounts of new vocabulary. Thirdly, hosted (e.g. at iot.schema.org) schema extensions could go into more detail, and fourthly, <a href="http://gs1.org/voc/">GS1-like external schemas</a> can also be integrated. These options are not mutually exclusive, and it is likely that "IoT + Schema.org" efforts will explore improvements and deployment using a combination of these options.</p>
<p>To elaborate on the distinction between schema.org's hosted versus external extensions, an excerpt from <a href="http://schema.org/docs/schemas.html#ext">the schema.org site:</a></p>
<blockquote><span style="color:#3a4956">As schema.org has grown, we have developed mechanisms for <a href="http://schema.org/docs/extension.html">community extension</a> as a way of adding more detailed descriptive vocabulary that builds on the schema.org core.</span><br>
<span style="color:#3a4956"><b>Hosted</b> extensions are managed and published as part of the schema.org project, with their design often led by one of more dedicated community groups.</span><br>
<span style="color:#3a4956"><b>External</b> extensions live elsewhere in the Web, typically managed by other organizations with their own processes and collaboration mechanisms. Please consult external documentation for full details of their vocabulary, versioning system and release history.</span></blockquote>
<p>Advantages of this combination of approaches (core + hosted + external …) include:</p>
<ul>
<li>Can build on a large and widely used base vocabulary giving definitions for basic things like Person, Event, Place, LocalBusiness, Product etc.</li>
<li>Integration between IoT-oriented and non-IoT environments - e.g. a TV set top box can be thought of as a device, but typically contains a database about TV shows, channels, actors and other non-IoT entities.</li>
<li>Decoupling of data formats from expected use of the data; e.g. a personal healthcare application that manages information about someone's weight, blood pressure etc. shouldn't have to care about which IoT ecosystem the user's devices belong to.</li>
<li>Can build upon existing community-based collaborations using public fora (Github/W3C).</li>
<li>Aligned with 'knowledge graph'-style of structured data (triples/graphs) as used widely in products from Google and other companies, as well as with the Wikidata work at Wikipedia.</li>
</ul>
<h3>Proposed Next Steps for IoT + Schema.org</h3>
<p>We propose a phased exploration of the topics outlined above.</p>
<ul>
<li>Phase 1: identify public mailing lists for topical discussion. This could be a combination of (1.) the existing W3C Community Group for "Web of Things" (<a href="https://www.w3.org/community/wot/">link</a>) (if its chair i.e. Dave Raggett agreed) and (2.) a dedicated high level list for information sharing hosted directly at schema.org or elsewhere (update: Dan Brickley has created <a href="mailto:[email protected]">[email protected]</a> to serve this purpose - <a href="https://groups.google.com/forum/#!forum/sdo-iot-sync">link</a>). <br>
This combination would simultaneously avoid fragmenting further the existing fora at W3C, while also providing a non-W3C public channel for more IETF-oriented participants who have expressed wariness regarding a 100% W3C-hosted approach. During this phase, we would encourage collection of existing works including literature reviews, mappings, collaborative prototyping and use-case driven sketching of possible designs, but we would not anticipate substantive additions to schema.org's core or creation of hosted extensions. An entry point for all these materials and discussions should be created at iot.schema.org.</li>
<li>Phase 2: exploration of existing or newly proposed schemas as extensions to schema.org, using the "External Extension" mechanism, along the lines of GS1's existing work at <a href="http://gs1.org/voc/">http://gs1.org/voc/</a> - this phase would encompass conversion/mapping/transformation from original data formats into something compatible with schema.org's <a href="http://schema.org/docs/datamodel.html">datamodel</a> and a <a href="https://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/#section-generalized-rdf">liberal interpretation</a> of W3C RDF.</li>
<li>Phase 3: based on phase 2 modeling and prototyping explorations and dialogue with relevant standards efforts such as W3C WoT, we could expect more substantive additions to schema.org core and/or population of term definitions at iot.schema.org.</li>
</ul>
<p>A rough timeline would be that phase 1 commences immediately (summer 2016), phase 2 later in 2016, and phase 3 primarily during 2017. All of this should not be an obstacle to making simple, small and pragmatic IoT-inspired improvements across schema.org at any time, wherever there is general community consensus. </p>
<p>As of 1st August 2016, such collaboration has been proposed as an activity <a href="https://github.com/schemaorg/schemaorg/issues/1272">within schema.org</a>'s GitHub repository, and a new mailing list established for ongoing discussion. The proposal is that an iot.schema.org site be established immediately as an entry point to these collaborations, and that initial discussions take place on the <a href="mailto:[email protected]">sdo-iot-sync</a> mailing list. Please sign up and join in!</p>
<hr style="height:1px;color:#ccc;" />
<h2>Appendix A: Schema Survey: Related Works</h2>
<p>It is impossible to provide a comprehensive overview of all schema-oriented standardization efforts relating to IoT. A few are collected here. We acknowledge that this is only a small sampling of relevant work and that a deeper survey (including e.g. rapidly evolving efforts like <a href="http://fiware-datamodels.readthedocs.io/en/latest/">FIWARE</a>) would be needed as part of any ongoing collaborative schema design. </p>
<p>We have left in some fairly large examples of actual markup using their existing schema.org-compatible syntaxes, to give a more detailed view of the kind of schemas that are already being explored and deployed. A natural next step would be to move these materials out into a dedicated compare-and-contrast document that examines them in more detail. </p>
<p>Before looking at these specific IoT-related schemas it may be useful to take a higher level view of relevant standardization activities at both the IETF and at W3C.</p>
<h3>IETF</h3>
<p>The IETF work on the Internet of Things crosses a number of different IETF Areas, and is coordinated by a <a href="https://trac.tools.ietf.org/area/int/trac/wiki/IOTDirWiki">recently constituted directorate</a>. The work includes a variety of application, security, routing, and addressing elements; related working groups include <a href="https://datatracker.ietf.org/wg/ace/charter/">ACE</a>, <a href="https://datatracker.ietf.org/wg/roll/charter/">ROLL</a>, <a href="https://datatracker.ietf.org/wg/6lo/charter/">6lo</a>, <a href="https://datatracker.ietf.org/wg/homenet/documents/">homenet</a>,<a href="https://datatracker.ietf.org/wg/homenet/documents/"> lwig</a>, <a href="https://datatracker.ietf.org/wg/6tisch/charter/">6TiSCH</a> and <a href="https://datatracker.ietf.org/wg/core/charter/">CoRE</a>. Because the work draws on existing IETF specifications and experience, it is also common for constrained device considerations to be present in other groups, even if it is not their main focus. The general thrust of IETF work is to ensure that constrained devices participate as fully in the Internet as is practical and to identify responses to those constraints that work well in the overall environment. See the recent <a href="https://www.internetsociety.org/publications/ietf-journal-april-2016/internet-things-standards-and-guidance-ietf">overview document</a>, "Internet of Things: Standards and Guidance from the IETF" for more details.</p>
<p>In addition to the work on standards specification, there is related work in the Internet Research Task Force, primarily concentrated in the <a href="https://irtf.org/t2trg">Thing-to-Thing Research Group</a> <a href="https://irtf.org/t2trg">(T2TRG)</a>. Working in close collaboration with the W3C's Web of Things group, the T2TRG focuses on longer term research issues on IoT, with current work centering around RESTful design / hypermedia-driven applications and security. The IRTF work is coordinated by the Internet Architecture Board, which has also held a number of workshops related to the Internet of Things. Two recent workshops focused on <a href="https://www.iab.org/activities/workshops/iotsi/">Semantic Interoperabilit</a>y and <a href="https://www.iab.org/activities/workshops/iotsu/">Software Updat</a>e practices for IoT. </p>
<h3>W3C</h3>
<p>W3C has a few specifications that cover IoT-related considerations relating to the Web platform, as well as an initiative exploring "Web of Things":</p>
<ul>
<li>Devices and Sensors WG - <a href="https://www.w3.org/2009/dap/">https://www.w3.org/2009/dap/</a><ul>
<li>"the mission of the Device and Sensors Working Group is to create client-side APIs that enable the development of Web Applications and Web Widgets that interact with devices hardware, sensors, services and applications such as the camera, microphone, proximity sensors, native address books, calendars and native messaging applications."</li>
<li>Generic Sensor API - <a href="https://www.w3.org/TR/generic-sensor/">https://www.w3.org/TR/generic-sensor/</a><ul>
<li>"defines a framework for exposing sensor data to the Open Web Platform in a consistent way. It does so by defining a blueprint for writing specifications of concrete sensors along with an abstract Sensor interface that can be extended to accommodate different sensor types."</ul></li>
<li>Vibration API - <a href="https://www.w3.org/TR/2016/PER-vibration-20160818/">https://www.w3.org/TR/2016/PER-vibration-20160818/</a><ul>
<li>"This specification defines an API that provides access to the vibration mechanism of the hosting device. Vibration is a form of tactile feedback."</ul></li>
</ul></li>
<li>"Web of Things" (WoT) - <a href="https://www.w3.org/WoT/">https://www.w3.org/WoT/</a><br>
This sets out to address the fragmentation of the IoT into incompatible platforms and data silos. The aim is to simplify application development and improve interoperability across different platforms through metadata that describes the interaction model exposed to applications (properties, actions and events), security and communication details for accessing platforms, and semantic models and constraints for search, validation and composition of services. The approach is based upon the core architecture of the Web with URIs <u>as addresses</u> for thing descriptions, declarative formats for these descriptions, and protocols for accessing things and their descriptions.<ul>
<li>Interest Group - <a href="https://www.w3.org/WoT/IG/">https://www.w3.org/WoT/IG/</a> (active with frequent plugfests)</li>
<li>Community Group - <a href="https://www.w3.org/community/wot/">https://www.w3.org/community/wot/</a> (somewhat active)</li>
<li>Business Group, Working Group - proposals for these are planned.</ul></li>
<li>Spatial Data on the Web WG<ul>
<li>Semantic Sensor Network Ontology - <a href="https://www.w3.org/TR/vocab-ssn/">https://www.w3.org/TR/vocab-ssn/</a><ul>
<li>The Semantic Sensor Network Ontology (commonly known as "SSN" or sometimes "SSNO") is an OWL-2 DL ontology for describing sensors and the observations they make of the physical world. SSN is published in a modular architecture that supports the judicious use of "just enough" ontology for diverse applications, including satellite imagery, large scale scientific monitoring, industrial and household infrastructure, citizen observers, and Web of Things. SSN is described and examples of its use are given.</li>
<li>Classes:<ul>
<li><a href="https://www.w3.org/TR/vocab-ssn/#Accuracy">Accuracy</a></li>
<li> <a href="https://www.w3.org/TR/vocab-ssn/#BatteryLifetime">BatteryLifetime</a></li>
<li> <a href="https://www.w3.org/TR/vocab-ssn/#Condition">Condition</a></li>
<li> <a href="https://www.w3.org/TR/vocab-ssn/#Deployment">Deployment</a></li>
<li> <a href="https://www.w3.org/TR/vocab-ssn/#DeploymentRelatedProcess">DeploymentRelatedProcess</a></li>
<li> <a href="https://www.w3.org/TR/vocab-ssn/#DetectionLimit">DetectionLimit</a></li>
<li> <a href="https://www.w3.org/TR/vocab-ssn/#Device">Device</a></li>
<li> <a href="https://www.w3.org/TR/vocab-ssn/#Drift">Drift</a></li>
<li><a href="https://www.w3.org/TR/vocab-ssn/#FeatureOfInterest">FeatureOfInterest</a></li>
<li> <a href="https://www.w3.org/TR/vocab-ssn/#MaintenanceSchedule">MaintenanceSchedule</a></li>
<li> <a href="https://www.w3.org/TR/vocab-ssn/#MeasurementCapability">MeasurementCapability</a></li>
<li> <a href="https://www.w3.org/TR/vocab-ssn/#MeasurementProperty">MeasurementProperty</a></li>
<li> <a href="https://www.w3.org/TR/vocab-ssn/#MeasurementRange">MeasurementRange</a></li>
<li><a href="https://www.w3.org/TR/vocab-ssn/#MeasurementFrequency">MeasurementFrequency</a></li>
<li> <a href="https://www.w3.org/TR/vocab-ssn/#MeasurementLatency">MeasurementLatency</a></li>
<li> <a href="https://www.w3.org/TR/vocab-ssn/#Observation">Observation</a></li>
<li> <a href="https://www.w3.org/TR/vocab-ssn/#ObservationValue">ObservationValue</a></li>
<li> <a href="https://www.w3.org/TR/vocab-ssn/#OperatingPowerRange">OperatingPowerRange</a></li>
<li><a href="https://www.w3.org/TR/vocab-ssn/#OperatingProperty">OperatingProperty</a></li>
<li> <a href="https://www.w3.org/TR/vocab-ssn/#OperatingRange">OperatingRange</a></li>
<li> <a href="https://www.w3.org/TR/vocab-ssn/#Platform">Platform</a></li>
<li> <a href="https://www.w3.org/TR/vocab-ssn/#Precision">Precision</a></li>
<li> <a href="https://www.w3.org/TR/vocab-ssn/#Property">Property</a></li>
<li> <a href="https://www.w3.org/TR/vocab-ssn/#Resolution">Resolution</a></li>
<li> <a href="https://www.w3.org/TR/vocab-ssn/#ResponseTime">ResponseTime</a></li>
<li> <a href="https://www.w3.org/TR/vocab-ssn/#Selectivity">Selectivity</a></li>
<li><a href="https://www.w3.org/TR/vocab-ssn/#Sensing">Sensing</a></li>
<li> <a href="https://www.w3.org/TR/vocab-ssn/#SensingDevice">SensingDevice</a></li>
<li> <a href="https://www.w3.org/TR/vocab-ssn/#Sensitivity">Sensitivity</a></li>
<li> <a href="https://www.w3.org/TR/vocab-ssn/#Sensor">Sensor</a></li>
<li> <a href="https://www.w3.org/TR/vocab-ssn/#SensorDataSheet">SensorDataSheet</a></li>
<li> <a href="https://www.w3.org/TR/vocab-ssn/#SensorOutput">SensorOutput</a></li>
<li> <a href="https://www.w3.org/TR/vocab-ssn/#Stimulus">Stimulus</a></li>
<li> <a href="https://www.w3.org/TR/vocab-ssn/#SurvivalProperty">SurvivalProperty</a></li>
<li><a href="https://www.w3.org/TR/vocab-ssn/#SurvivalRange">SurvivalRange</a></li>
<li> <a href="https://www.w3.org/TR/vocab-ssn/#System">System</a></li>
<li> <a href="https://www.w3.org/TR/vocab-ssn/#SystemLifetime">SystemLifetime</a></li>
</ul></li>
</ul></li>
</ul></li>
</ul>
<h3>Other Initiatives</h3>
<h4>SmartThings (via Michael Koster)</h4>
<p>For <a href="https://www.smartthings.com/uk/about">SmartThings</a> background, see See SmartThings <a href="http://docs.smartthings.com/en/latest/capabilities-reference.html">Capability Model documentation</a>. <br>
Affordances typically provided by the set of (5) device types mentioned map to SmartThings capabilities. See also: <a href="https://docs.google.com/document/d/1btnJOgp110By4j4Cqh8Axa3U-q1va43SbpqRZ2Kbkxk/edit?usp=sharing">SmartThings Capabilities for Basic Device Types</a>. Mapping of these capabilities and some representative devices to the current W3C Thing Description model (events, actions, properties): <a href="https://github.com/connectIOT/iotivity-servient/tree/master/td">https://github.com/connectIOT/iotivity-servient/tree/master/td</a>. Note that the "st" expansion in these examples should resolve to references to <a href="http://iot.schema.org/">iot.schema.org</a> resources.<br>
See documents for details. In summary, the device types + capabilities listed are:</p>
<ul>
<li>Light (switch, switchLevel, colorControl, colorTemperature)</li>
<li>Motion Sensor (motionSensor, temperatureMeasurement, battery)</li>
<li>Water Sensor (waterSensor, temperatureMeasurement, battery)</li>
<li>Switch (button, battery)</li>
<li>Door Sensor (contactSensor, temperatureMeasurement, battery)</li>
<li>Smart Plug (switch, energyMeter).</li>
</ul>
<p>Capabilities in turn have attributes, which may have commands (that may take parameters). </p>
<h5>SmartThings Capability Model <-> schema.org mapping </h5>
<p>Via: Michael Koster</p>
<p>A very rough prototype mapping of the SmartThings Capability Model to schema.org-like constructs. This is a rough exploration, giving an idea of the basic structures and formats. This uses the schema.org definitions for Type and Property, and define some base types and a starting set of structural relation properties (hasAttribute...) to define a consistent model. All capability type instances derive from the base types. </p>
<p>The base model is at: <a href="http://thingschema.org/smartthings/stCapabilityModel.jsonld">http://thingschema.org/smartthings/stCapabilityModel.jsonld</a></p>
<p>Example set of types for modeling lights are at:<br>
<a href="http://thingschema.org/smartthings/examples/light-example.jsonld">http://thingschema.org/smartthings/examples/light-example.jsonld</a> (copied below)<br>
-<br>
The above files are collections of types and properties that are split out to individual files at the URI reference endpoints, e.g. <br> <a href="http://thingschema.org/smartthings/Attribute.jsonld">http://thingschema.org/smartthings/Attribute.jsonld</a>, <a href="http://thingschema.org/smartthings/Command.jsonld">http://thingschema.org/smartthings/Command.jsonld</a>, etc.</p>
<p>The base model directory at <a href="http://thingschema.org/smartthings/">http://thingschema.org/smartthings/</a> is populated but I haven't populated the application capabilities instances at <a href="http://thingschema.org/smartthings/capabilities/">http://thingschema.org/smartthings/capabilities/</a> yet; only the first examples.</p>
<p>These validate on <a href="http://json-ld.org/playground/">http://json-ld.org/playground/</a> you can just plug in the .jsonld URLs above to view them as triples in various formats.</p>
<p>It should be possible to convert these to OWL or other graph formats, or use them for constructors or validators.</p>
<p>Command Instances: these track instantiation of an action over time, e.g. slowly turning on lights over time. In schema.org these would all be Action, and the matter handled via URIs for Action identity.</p>
<table class="style0 code">
<tbody>
<tr>
<td>
{
"@context": {
"rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
"rdfs": "http://www.w3.org/2000/01/rdf-schema#",
"sch": "http://schema.org/",
"st": "http://thingschema.org/smartthings/",
"stc": "http://thingschema.org/smartthings/capabilities/",
"type": { "@id":"rdf:type", "@type": "@id"},
"id": { "@id":"rdf:ID", "@type": "@id"},
"subClassOf": {"@id": "rdfs:subClassOf", "@type": "@id"},
"range": {"@id": "rdfs:range", "@type": "@id"},
"domain": {"@id": "rdfs:domain", "@type": "@id"},
"items": "st:hasItem",
"hasCapability": { "@id": "st:hasCapability", "@type": "@id"},
"hasAttribute": { "@id": "st:hasAttribute", "@type": "@id"},
"hasCommand": { "@id": "st:hasCommand", "@type": "@id"},
"hasMethod": { "@id": "st:hasMethod", "@type": "@id"},
"hasParameter": { "@id": "st:hasParameter", "@type": "@id"},
"hasAttribute": { "@id": "st:hasAttribute", "@type": "@id"},
"hasRepresentationFormat": { "@id": "st:hasRepresentationFormat", "@type": "@id"}
},
"items":
[
{
"type": "sch:Type",
"id": "stc:light",
"subClassOf": "st:Thing",
"hasCapability": ["stc:switch", "stc:switchlevel", "stc:colortemperature", "stc:colorcontrol"]
},
{
"type": "sch:Type",
"id": "stc:switch",
"subClassOf": "st:Capability",
"hasAttribute": "stc:onoff",
"hasCommand": ["stc:on", "stc:off"]
},
{
"type": "sch:Type",
"id": "stc:switchlevel",
"subClassOf": "st:Capability",
"hasAttribute": ["stc:level"],
"hasCommand": ["stc:setLevel"]
},
{
"type": "sch:Type",
"id": "stc:colortemperature",
"subClassOf": "st:Capability",
"hasAttribute": "stc:colortemperature",
"hasCommand": "stc:setcolortemperature"
},
{
"type": "sch:Type",
"id": "stc:colorcontrol",
"subClassOf": "st:Capability",
"hasAttribute": ["stc:hue", "stc:saturation", "stc:color"],
"hasCommand": ["stc:sethue", "stc:setsaturation", "stc:setcolor"]
},
{
"type": "sch:Type",
"id": "stc:onoff",
"subClassOf": ["st:Attribute", "st:Parameter"],
"hasRepresentationFormat": "sch:string"
},
{
"type": "sch:Type",
"id": "stc:level",
"subClassOf": ["st:Attribute", "st:Parameter"],
"hasRepresentationFormat": "sch:number"
},
{
"type": "sch:Type",
"id": "stc:transitiontime",
"subClassOf": "st:Parameter",
"hasRepresentationFormat": "sch:number"
},
{
"type": "sch:Type",
"id": "stc:colortemperature",
"subClassOf": ["st:Attribute", "st:Parameter"],
"hasRepresentationFormat": "sch:number"
},
{
"type": "sch:Type",
"id": "stc:hue",
"subClassOf": ["st:Attribute", "st:Parameter"],
"hasRepresentationFormat": "sch:number"
},
{
"type": "sch:Type",
"id": "stc:saturation",
"subClassOf": ["st:Attribute", "st:Parameter"],
"hasRepresentationFormat": "sch:number"
},
{
"type": "sch:Type",
"id": "stc:hex",
"subClassOf": ["st:Attribute", "st:Parameter"],
"hasRepresentationFormat": "sch:string"
},
{
"type": "sch:Type",
"id": "stc:color",
"subClassOf": "st:Attribute",
"hasParameter": ["stc:hue", "stc:saturation", "stc:level", "stc:onoff", "stc:hex"],
"hasRepresentationFormat": "stc:colorformat"
},
{
"type": "sch:Type",
"id": "stc:on",
"subClassOf": "st:Command",
"hasRepresentationFormat": "sch:string"
},
{
"type": "sch:Type",
"id": "stc:off",
"subClassOf": "st:Command",
"hasRepresentationFormat": "sch:string"
},
{
"type": "sch:Type",
"id": "stc:setlevel",
"subClassOf": "st:Command",
"hasParameter": ["stc:level", "stc:transitiontime"]
},
{
"type": "sch:Type",
"id": "stc:setcolortemperature",
"subClassOf": "st:Command",
"hasParameter": ["stc:colortemperature"]
},
{
"type": "sch:Type",
"id": "stc:setcolor",
"subClassOf": "st:Command",
"hasParameter": ["stc:hue", "stc:saturation", "stc:level", "stc:onoff", "stc:hex"],
"hasRepresentationFormat": "stc:colorformat"
}
]
}<br>
</td>
</tr>
</tbody>
</table>
<h4>Architectural discussions</h4>
<p>From Michael Koster:</p>
<p>Regarding the mapping of abstract Events, Actions, and Properties to a REST + Notifications API. Here is a description of an API mapping and processing workflow for this purpose.<br>
<a href="https://github.com/connectIOT/iotivity-servient/blob/master/docs/abstract-transfer.pdf">https://github.com/connectIOT/iotivity-servient/blob/master/docs/abstract-transfer.pdf</a></p>
<p>Also some slides on RESTful Actuation methods:<br>
<a href="https://github.com/connectIOT/iotivity-servient/blob/master/docs/RESTful%20Actuation.pdf">https://github.com/connectIOT/iotivity-servient/blob/master/docs/RESTful%20Actuation.pdf</a></p>
<h4>SAREF - Smart Appliances REFerence ontology</h4>
<p>The Smart Appliance REFerence ontology (SAREF) is a shared model of consensus developed in close interaction with the industry and with the support of the European Commission. It is published as a <a href="http://www.etsi.org/deliver/etsi_ts/103200_103299/103264/01.01.01_60/ts_103264v010101p.pdf">technical specification by ETSI</a> and provides an important contribution to achieve semantic interoperability for smart appliances.</p>
<p>SAREF focuses on the concept of "device", which is a tangible object designed to accomplish a particular task in households, common public buildings or offices. In order to accomplish this task, a device performs one or more "functions". For example, a washing machine is designed to wash (task) and to accomplish this task it performs, among others, a start and stop function. When connected to a network, a device offers a "service", which is a representation of a function to a network that makes the function discoverable, registerable and remotely controllable by other devices in the network. A device is also characterized by an "energy profile" and a "power profile" that can be used to optimize the energy efficiency in a home or office that are part of the building. SAREF is expressed in OWL-DL and contains 110 classes and 42 properties.</p>
<p>SAREF HTML documentation is available at <a href="http://w3id.org/saref">http://w3id.org/saref</a>. SAREF human readable documentation with explanatory diagrams is <a href="http://www.etsi.org/deliver/etsi_ts/103200_103299/103264/01.01.01_60/ts_103264v010101p.pdf">also available</a>. More details on the methodology, principles, modelling choices and lessons learned can be found in <a href="http://download.springer.com/static/pdf/575/chp%253A10.1007%252F978-3-319-21545-7_9.pdf?originUrl=http%3A%2F%2Flink.springer.com%2Fchapter%2F10.1007%2F978-3-319-21545-7_9&token2=exp=1466004140~acl=%2Fstatic%2Fpdf%2F575%2Fchp%25253A10.1007%25252F978-3-319-21545-7_9.pdf%3ForiginUrl%3Dhttp%253A%252F%252Flink.springer.com%252Fchapter%252F10.1007%252F978-3-319-21545-7_9*~hmac=7099e81cdaaffa5a3bd6b1425eea5b042418ccd8d3015a062b7ef0391bf809ed">FOMI2015</a> and <a href="http://download.springer.com/static/pdf/709/chp%253A10.1007%252F978-3-319-33245-1_12.pdf?originUrl=http%3A%2F%2Flink.springer.com%2Fchapter%2F10.1007%2F978-3-319-33245-1_12&token2=exp=1466004161~acl=%2Fstatic%2Fpdf%2F709%2Fchp%25253A10.1007%25252F978-3-319-33245-1_12.pdf%3ForiginUrl%3Dhttp%253A%252F%252Flink.springer.com%252Fchapter%252F10.1007%252F978-3-319-33245-1_12*~hmac=76620ea07173f56bf1dbad5ec57690adfd8df5a0f076a76a17c191dae2893ed1">OWLED2015</a>. SAREF can be downloaded in different formats at <a href="http://ontology.tno.nl/saref.ttl">http://ontology.tno.nl/saref.ttl</a> (TURTLE version) or <a href="http://ontology.tno.nl/saref.owl">http://ontology.tno.nl/saref.owl</a> (RDF/XML version). The server does not currently support content negotiation, so format-specific URLs are needed (saref.ttl etc.).</p>
<p><a href="http://ontology.tno.nl/saref4ee/">SAREF4EE</a> is the extension of SAREF for <a href="http://www.eebus.org/en">EEBus</a> and <a href="http://www.energy-home.it">Energy@Home</a>, the major Germany- and Italy-based industry associations that include, among others, BSH Bosch/Siemens, Miele, Intel, Deutsche Telekom, Electrolux, Enel, Indesit, Whirlpool and Telecom Italia. SAREF4EE enables the interoperability between EEBus and E@H devices in demand response use cases. In these use cases, customers can offer flexibility to the Smart Grid to manage their smart home devices by means of a Customer Energy Manager (CEM). SAREF4EE HTML documentation is available at <a href="http://w3id.org/saref4ee">http://w3id.org/saref4ee</a>. SAREF4EE human readable documentation with explanatory diagrams and some example instances is <a href="http://ontology.tno.nl/SAREF4EE_Documentation_v0.1.pdf">also available</a>.</p>
<p>From the human-readable SAREF overview:</p>
<p>SAREF is based on the following main concepts (in alphabetical order): </p>
<ul>
<li>Building Object (Door, Window).</li>
<li>Building Space.</li>
<li>Command (e.g. OnCommand, OffCommand, PauseCommand, GetCommand, NotifyCommand, SetLEvelCommand).</li>
<li>Commodity (e.g. Electricity, Gas, Water).</li>
<li>Device (e.g. Switch, Meter, Sensor, Washing Machine). </li>
<li>Device Category.</li>
<li>Duration Description. </li>
<li>Function (Actuating Function, EventFunction, Metering Function, Sensing Function).</li>
<li>Function Category.</li>
<li>Profile.</li>
<li>Property (Energy, Humidity, Light, Motion, Occupancy, Power, Pressure, Price, Smoke, Temperature, Time).</li>
<li>Service.</li>
<li>State.</li>
<li>Task (e.g. Cleaning, Safety, Entertainment).</li>
<li>Temporal Entity.</li>
<li>UnitOfMeasure (e.g. Currency, EnergyUnit, Power Unit, Temperature Unit). </li>
</ul>
<p>SAREF's analysis of existing conceptualizations identified 3 clusters (focusses, or trends):</p>
<ol>
<li>devices, sensors and their specification in terms of functions, states and services</li>
<li> energy consumption/production information and profiles to optimize energy efficiency;</li>
<li>building related semantic models. </li>
</ol>
<p>Excerpting,</p>
<p>"In SAREF these trends are called, function-related, energy-related and building-related, respectively. SAREF includes not only the necessary concepts and relationships to characterize these trends individually, but also to link these trends to each other. For example, the concept of building space links function-related assets to building-related assets, since a device designed to accomplish a certain function is located in a specific room of the home or office in a building. Another example is the concept of profile that links function-related assets to energy-related assets, since a device designed to accomplish a certain function can be associated with a certain energy/power profile that can be used for energy optimization purposes."</p>
<h4>Turtle Samples (via Laura Daniele)</h4>
<p>A saref:Device must accomplish at least one function, and can be used for the purpose of i) offering a commodity, such as saref:Water or saref:Gas; ii) sensing, measuring and notifying a property, such as saref:Temperature, saref:Energy or saref:Smoke, or iii) controlling a building object, such as a saref:Door or a saref:Window. Moreover, a device may consist of other devices (saref:consistsOf property). For example,</p>
<ul>
<li>a temperature sensor is a device that consists of a sensor, has category saref:Sensor, performs the saref:SensingFunction and is used for the purpose of sensing a property of type saref:Temperature; </li>
<li>a smoke sensor is a device that consists of a sensor, has category saref:Sensor, performs the saref:SensingFunction and saref:EventFunction, and is used for the purpose of sensing a property of type saref:Smoke and notifying that a certain threshold has been exceeded; </li>
<li>a door switch is a device that consists of a switch, has category saref:Actuator, performs the saref:OpenCloseFunction and is used for the purpose of controlling a building object of type saref:Door; </li>
<li>an energy meter is a device that consists of a meter, has category saref:Meter, performs the saref:MeteringFunction and is used for the purpose of measuring the saref:Energy property.</li>
<li>a washing machine is a device that has category saref:Appliance, accomplishes the task saref:Washing and performs an actuating function of type saref:StartPauseFunction. From an energy related perspective, a washing machine also belongs to the category saref:Load; </li>
</ul>
<p>A function is represented with the saref:Function and is defined as "the functionality necessary to accomplish the task for which a device is designed". It must have at least one command (saref:hasCommand min 1 saref:Command). Examples of functions are</p>
<ul>
<li>the saref:ActuatingFunction which allows to "transmit data to actuators, such as level settings (e.g., temperature) or binary switching (e.g., open/close, on/off)", </li>
<li>The saref:SensingFunction which allows to "transmit data from sensors, such as measurement values (e.g., temperature) or sensing data (e.g., occupancy)", </li>
<li>The saref:MeteringFunction which allows to "get data from a meter, such as current meter reading or instantaneous demand", and </li>
<li>The saref: EventFunction which allows to "notify another device that a certain threshold value has been exceeded". </li>
</ul>
<p>Examples of Actuating Functions are the saref:OnOffFunction (allows to "switch on and off an actuator", and has the commands saref:OnCommand, saref:OffCommand and saref:ToggleCommand), and the saref:LevelControlFunction (allows to "do level adjustments of an actuator in a certain range (e.g., 0 %-100 %), such as dimming a light or set the speed of an electric motor"). Depending on the function(s) it performs, a device can be found in a corresponding saref:State. For example, a switch can be found in the saref:OnOffState, which is characterized by the values "ON" or "OFF". A device also offers a service (the saref:Service class), which is a representation of a function to a network that makes this function discoverable, registerable and remotely controllable by other devices in the network. A service must specify the device(s) offering the service, the function(s) to be represented, and the input and output parameters necessary to operate the service. For example, a light switch can offer the service of remotely switching the lights in a home through mobile phone devices that are connected to the local network. This remote switching service represents the saref:OnOffFunction, it must have a saref:State as input parameter, e.g., with value "ON", and it must have a saref:State has output parameter, namely with value "OFF" in this example since the input state value was "ON".</p>
<p>Representative samples of SAREF, describing a <a href="http://ontology.tno.nl/examples/saref_lightSwitch.ttl">light switch</a>, <a href="http://ontology.tno.nl/examples/saref_doorSwitch.ttl">door switch</a>, <a href="http://ontology.tno.nl/examples/saref_temperatureSensor.ttl">temperature sensor</a>, <a href="http://ontology.tno.nl/examples/saref_smokeSensor.ttl">smoke sensor</a>, <a href="http://ontology.tno.nl/examples/saref_energyMeter.ttl">energy meter</a> and <a href="http://ontology.tno.nl/examples/saref_washingMachine.ttl">washing machine</a>.</p>
<p>See <a href="http://ontology.tno.nl">ontology.tno.nl</a> for detailed data.</p>
<p>Here we show just the example of a specific light switch, alongside supporting definitions:</p>
<table class="style0 code">
<tbody>
<tr>
<td># baseURI: <a href="http://ontology.tno.nl/saref/lightswitch">http://ontology.tno.nl/saref/lightswitch</a>
# imports: <a href="https://w3id.org/saref">https://w3id.org/saref</a>
@prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix saref: <https://w3id.org/saref#> .
@prefix saref-ls: <http://ontology.tno.nl/saref/lightswitch#> .
@prefix time: <http://www.w3.org/2006/time#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
<http://ontology.tno.nl/saref/lightswitch>
rdf:type owl:Ontology ;
owl:imports <https://w3id.org/saref> ;
.
saref-ls:BuildingSpace_OfficeHall
rdf:type saref:BuildingSpace ;
rdfs:label "Office Hall"^^xsd:string ;
geo:lat "52.0821"^^xsd:string ;
geo:long "4.3251"^^xsd:string ;
saref:hasSpaceType "Office hall"^^xsd:string ;
.
saref-ls:Light
rdf:type saref:Light ;
rdfs:label "Light "^^xsd:string ;
saref:hasValue "not applicable"^^xsd:string ;
saref:isMeasuredIn <http://www.wurvoc.org/vocabularies/om-1.8/lux> ;
.
saref-ls:LightSwitch_LS1001
rdf:type saref:LightSwitch ;
rdfs:label "Light switch LS1001"^^xsd:string ;
saref:IsUsedFor saref-ls:Light ;
saref:accomplishes saref-ls:Lighting ;
saref:consistsOf saref:Switch ;
saref:hasCategory saref:Actuator ;
saref:hasDescription "Light switch LS1001 is an example of how to instantiate a light switch using SAREF"^^xsd:string ;
saref:hasFunction saref-ls:OnOffFunction ;
saref:hasManufacturer "manufacturer-abc"^^xsd:string ;
saref:hasModel "890-09w"^^xsd:string ;
saref:hasState saref-ls:OffState ;
saref:hasState saref-ls:OnState ;
saref:isLocatedIn saref-ls:BuildingSpace_OfficeHall ;
saref:offers saref-ls:SwitchOnService ;
.
saref-ls:Lighting
rdf:type saref:Task ;
rdfs:label "Lighting"^^xsd:string ;
saref:isAccomplishedBy saref-ls:LightSwitch_LS1001 ;
.
saref-ls:OffCommand
rdf:type saref:OffCommand ;
rdfs:label "OFF command "^^xsd:string ;
saref:actsUpon saref-ls:OnState ;
.
saref-ls:OffState
rdf:type saref:OffState ;
rdfs:label "OFF state"^^xsd:string ;
.
saref-ls:OnCommand
rdf:type saref:OnCommand ;
rdfs:label "ON command"^^xsd:string ;
saref:actsUpon saref-ls:OffState ;
.
saref-ls:OnOffFunction
rdf:type saref:OnOffFunction ;
rdfs:label "ON OFF function "^^xsd:string ;
saref:hasCommand saref-ls:OffCommand ;
saref:hasCommand saref-ls:OnCommand ;
.
saref-ls:OnState
rdf:type saref:OnState ;
rdfs:label "ON state"^^xsd:string ;
.
saref-ls:SwitchOnService
rdf:type saref:SwitchOnService ;
rdfs:label "Switch ON service "^^xsd:string ;
saref:hasInputParameter saref-ls:OffState ;
saref:hasOutputParameter saref-ls:OnState ;
saref:isOfferedBy saref-ls:LightSwitch_LS1001 ;
saref:represents saref-ls:OnOffFunction ;
.<br>
</td>
</tr>
</tbody>
</table>
<h4>BuildSys Building Schema (BRICK) </h4>
<p>Via <a href="http://cseweb.ucsd.edu/~jbkoh">Jason Koh</a>.</p>
<p>Many applications have been developed for commercial buildings for energy-saving, better human interactions, system maintenance, etc. Those applications however have not been widely deployed due to the lack of common understanding of building resource representation. Recent movements for buildings such as Project Haystack, Industrial Foundation Classes (IFC), and SAREF provide their own schemata but do not capture all the terminologies and relationships that modern building applications require [1]. Brick is a uniform schema presenting metadata in buildings. Research community from multiple organizations put this forward actively. Base schema, actual building instances, and querying examples for applications are public through a repository. Further details can be found in the original paper [2].<br>(repository: <a href="https://github.com/BuildSysUniformMetadata/GroundTruth">https://github.com/BuildSysUniformMetadata/GroundTruth</a>)</p>
<p>We normalized terminologies and relationships of sensors and actuators existing in 5 different Building Management Systems (BMS) needed for modern applications mostly listed in [Bhattacharya et al. 2015] into Brick. One of our observation was that a terminology consists of multiple words, and each of them represent a meaning. We define each terminology to represent equipment, sensors, etc. as a Tagset. Basic taxonomy of Tagsets are described in Fig. 1.<br>
The words that constitute Tagsets are called Tags. For example, "Room Temperature Sensor" is under "Sensor" category in Fig.1. and is broken down into Tags as "Room", "Temperature" and "Sensor". In this simple way, we can achieve both ease of use and expressiveness. Building managers not familiar with the entire schema may annotate a resource such as equipment or a sensor by Tags easily. As each tag represents a meaning, meaning of a collection of tags can be inferred to the most similar Tagset. At the same time, managers or developers who have full knowledge about the schema can represent resources by Tagsets with exact meanings. Managers can define utilize predefined properties to express relationships among Tagsets as presented in Table 1. For example, we can express that a "Space Heater" "hasPoint" "Room Temperature Sensor". </p>
<p>List 1 shows how Tagsets are defined in a formal way using Turtle syntax. "HVAC_Zone" is a Tagset, which is a subclass of "Location" and consists of Tags as "HVAC" and "Zone". The relationships between a Tagset and Tags are explicitly defined to infer the meaning of a collection of Tags easily as explained before. Usable Tags are also defined in a similar way as in List 2 with a similar taxonomy as Tagset's. We represent an example building with these subsets of the schema in List 3. From this information, we know that example_building is a Building, zone_1 is a HVAC_Zone located in the building. The zone has a vav_1, which is a Variable Air Volume Box (a type of terminal units to provide controlled air to a HVAC zone such as a room) where a one Temperature Sensor functions for both the HVAC Zone and the VAV. </p>
<p>Actual instances of Brick for five buildings validate its completeness. Brick captures 98 % of 15,700 BMS data points and 615,000 sq-ft of floor space. Illustrative but representative queries are also successfully tested to show the coverage of relationships we need for eight canonical applications. These actual examples are available via the repository.</p>
<!-- <p><img src="insert_image_url_here"></p>-->
<p>Fig. 1 A Subset of Brick Tagset Taxonomy</p>
<table class="style0">
<tbody>
<tr>
<td>Relationship</td>
<td>Definition</td>
</tr>
<tr>
<td>A contains B</td>
<td>A physically encapsulates B</td>
</tr>
<tr>
<td>A controls B</td>
<td>A determines or affects the internal state of B</td>
</tr>
<tr>
<td>A hasPart B</td>
<td>A has some component or part B</td>
</tr>
<tr>
<td>A hasPoint B</td>
<td>A is measured by or is otherwise represented by point B</td>
</tr>
<tr>
<td>A feeds B</td>
<td>A flows or is connected to B</td>
</tr>
</tbody>
</table>
<p>Table 1. Relationships of Tagsets in Brick.</p>
<table class="style0 code">
<tbody>
<tr>
<td>### Tagsets<br>
@prefix owl: <http://www.w3.org/2002/07/owl#> .<br>
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .<br>
@prefix brickframe: <http://buildsys.org/ontologies/BrickFrame#> .<br>
@prefix tag: <http://buildsys.org/ontologies/BrickTag#> .<br>
@prefix : <http://buildsys.org/ontologies/Brick#> .<br>
:Location rdfs:subClassOf brickframe:TagSet ;<br>
rdfs:subClassOf [ a owl:Restriction ; owl:onProperty :hasTag ; owl:someValuesFrom tag:Location ].<br>
<br>
:HVAC_Zone rdfs:subClassOf :Location;<br>
rdfs:subClassOf [ a owl:Restriction ; owl:onProperty :hasTag ; owl:someValuesFrom tag:HVAC ];<br>
rdfs:subClassOf [ a owl:Restriction ; owl:onProperty :hasTag ; owl:someValuesFrom tag:Zone ].<br>
<br>
:Point rdfs:subClassOf brickframe:TagSet ;<br>
rdfs:subClassOf [ a owl:Restriction ; owl:onProperty :hasTag ; owl:someValuesFrom tag:Point ].<br>
<br>
:Sensor rdfs:subClassOf :Point ;<br>
rdfs:subClassOf [ a owl:Restriction ; owl:onProperty :hasTag ; owl:someValuesFrom tag:Sensor ].<br>
<br>
:Temperature_Sensor rdfs:subClassOf :Sensor ;<br>
rdfs:subClassOf [ a owl:Restriction ; owl:onProperty :hasTag ; owl:someValuesFrom tag:Temperature ];<br>
rdfs:subClassOf [ a owl:Restriction ; owl:onProperty :hasTag ; owl:someValuesFrom tag:Sensor ].<br>
<br>
:Zone_Temperature_Sensor rdfs:subClassOf :Temperature_Sensor ;<br>
rdfs:subClassOf [ a owl:Restriction ; owl:onProperty :hasTag ; owl:someValuesFrom tag:Zone ];<br>
rdfs:subClassOf [ a owl:Restriction ; owl:onProperty :hasTag ; owl:someValuesFrom tag:Temperature ];<br>
rdfs:subClassOf [ a owl:Restriction ; owl:onProperty :hasTag ; owl:someValuesFrom tag:Sensor ].<br>
:Equipment rdfs:subClassOf brickframe:TagSet ;<br>
rdfs:subClassOf [ a owl:Restriction ; owl:onProperty :hasTag ; owl:someValuesFrom tag:Equipment ].<br>
<br>
:VAV rdfs:subClassOf :Terminal_Unit ;<br>
rdfs:subClassOf [ a owl:Restriction ; owl:onProperty :hasTag ; owl:someValuesFrom tag:VAV ].<br>
:HVAC rdfs:subClassOf :Equipment ;<br>
rdfs:subClassOf [ a owl:Restriction ; owl:onProperty :hasTag ; owl:someValuesFrom tag:HVAC ].<br>
<br>
:Terminal_Unit rdfs:subClassOf :HVAC;<br>
rdfs:subClassOf [ a owl:Restriction ; owl:onProperty :hasTag ; owl:someValuesFrom tag:Terminal ];<br>
rdfs:subClassOf [ a owl:Restriction ; owl:onProperty :hasTag ; owl:someValuesFrom tag:Unit ].</td>
</tr>
</tbody>
</table>
<p>List 1: Brick.ttl</p>
<table class="style0">
<tbody>
<tr>
<td>### Tags<br>
@prefix owl: <http://www.w3.org/2002/07/owl#> .<br>
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .<br>
@prefix brickframe: <http://buildsys.org/ontologies/BrickFrame#> .<br>
@prefix : <http://buildsys.org/ontologies/BrickTag#> .<br>
:Location rdfs:subClassOf brickframe:Tag . <br>
:Building rdfs:subClassOf :Location .<br>
:Zone rdfs:subClassOf :Location .<br>
:MeasurementProperty rdfs:subClassOf brickframe:Tag .<br>
:MeasurementProperty_PhysicalProperties rdfs:subClassOf :MeasurementProperty .<br>
:Temperature rdfs:subClassOf :MeasurementProperty_PhysicalProperties .<br>
:Equipment rdfs:subClassOf brickframe:Tag .<br>
:HVAC rdfs:subClassOf :Equipment .<br>
:VAV rdfs:subClassOf :HVAC .<br>
:Point rdfs:subClassOf brickframe:Tag .<br>
:Sensor rdfs:subClassOf :Point .<br>
</td>
</tr>
</tbody>
</table>
<p>List 2: BrickTag.ttl</p>
<table class="style0">
<tbody>
<tr>
<td>### Example Building<br>
@prefix brick: <http://buildsys.org/ontologies/Brick#> .<br>
@prefix brickframe: <http://buildsys.org/ontologies/BrickFrame#> .<br>
@prefix ex: <http://ucsd.edu/building/ontology/example_building#> .<br>
@prefix owl: <http://www.w3.org/2002/07/owl#> .<br>
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .<br>
ex:example_building a brick:Building .<br>
ex:zt_sensor_1 a brick:Zone_Temperature_Sensor; <br>
brickframe:isPointOf ex:zone_1, ex:vav_1 .<br>
<br>
ex:zone_1 a brick:HVAC_Zone;<br>
brickframe.isLocatedIn ex:example_building<br>
.<br>
<br>
ex:vav_1 a brick:VAV;<br>
brickframe:basPoint ex:zt_sensor_1;<br>
brickframe:feeds ex:zone_1.</td>
</tr>
</tbody>
</table>
<p>List 3 An Example Building Instance</p>
<p>References<br>
[1] Bhattacharya, Arka, Joern Ploennigs, and David Culler. "<i>Short Paper: Analyzing Metadata Schemas for Buildings: The Good, the Bad, and the Ugly</i>." In Proceedings of the 2nd ACM International Conference on Embedded Systems for Energy-Efficient Built Environments, pp. 33-34. ACM, 2015.<br>
[2] Bharathan Balaji, Arka Bhattacharya, Gabe Fierro, Jingkun Gao, Joshua Gluck, Dezhi Hong, Aslak Johansen, Jason Koh, Yuvraj Agarwal, Mario Berges, David Culler, Rajesh Gupta, Mikkel Baun Kjærgaard, Joern Ploennigs and Kamin Whitehouse, "<i>Brick v1.0 - Towards a Unified Metadata Schema For Buildings</i>", In Proceedings of the 3rd ACM International Conference on Embedded Systems for Energy-Efficient Built Environments, 2016 (accepted, <a href="https://www.dropbox.com/s/g5ipwtkk44407ob/Brick_BuildSys2016.pdf?dl=0">provisional pdf</a>).</p>
<h3> </h3>
<h3>Nest Weave (Google/Alphabet)</h3>
<p>Documentation of the file format still Nest-internal.</p>
<p>Primitive components in Nest Weave are called Traits, which are small units of composable functionality, comprising Properties, Commands, and Events. Message format is <a href="https://en.wikipedia.org/wiki/Protocol_Buffers">protobuf</a>, and is intended to be highly readable, but does not imply any particular binary format. </p>
<h3>Assistant-related Home Automation functions (Google)</h3>
<p><b>Home Automation Execution Functional Schemata</b></p>
<p>N.B. This is a work in progress; please feel free to propose changes or sketch out new functions. </p>
<table class="style0">
<tbody>
<tr>
<td>Function ID</td>
<td>onOff</td>
<td></td>
</tr>
<tr>
<td>Status</td>
<td>proposed</td>
<td></td>
</tr>
<tr>
<td>Parameter</td>
<td>Name</td>
<td>state</td>
</tr>
<tr>
<td></td>
<td>Type</td>
<td>string</td>
</tr>
<tr>
<td></td>
<td>Values</td>
<td>'on' 'off'</td>
</tr>
<tr>
<td></td>
<td>Units</td>
<td>-</td>
</tr>
<tr>
<td></td>
<td>R/W</td>
<td>Both</td>
</tr>
<tr>
<td>Devices</td>
<td>lights, wall plugs, anything with an on/off switch</td>
<td></td>
</tr>
<tr>
<td>Equates to Weave Schema</td>
<td>onOff</td>
<td></td>
</tr>
<tr>
<td>Notes</td>
<td>This is the base case of a 'semantic function' -- not much to do with on and off other than set the state and query the state. [Note that devices with more state would have a separate function -- such as reading the Smartthings power draw]</td>
<td></td>
</tr>
</tbody>
</table>
<br/>
<table class="style0">
<tbody>
<tr>
<td>Function ID</td>
<td>powerCycle</td>
<td></td>
</tr>
<tr>
<td>Status</td>
<td>proposed</td>
<td></td>
</tr>
<tr>
<td>Parameter</td>
<td>Name</td>
<td>delay</td>
</tr>
<tr>
<td></td>
<td>Type</td>
<td>int (optional)</td>
</tr>
<tr>
<td></td>
<td>Values</td>
<td>0-?</td>
</tr>
<tr>
<td></td>
<td>Units</td>
<td>seconds</td>
</tr>
<tr>
<td></td>
<td>R/W?</td>
<td>W</td>
</tr>
<tr>
<td>Devices</td>
<td>lights, wall plugs, anything with an on/off switch</td>
<td></td>
</tr>
<tr>
<td>Equates to Weave Schema</td>
<td>onOff + choreography</td>
<td></td>
</tr>
<tr>
<td>Notes</td>
<td>A higher level function with choreography -- set onOff to off, wait n seconds, set onOff to on. </td>
<td></td>
</tr>
</tbody>
</table>
<br/>
<table class="style0">
<tbody>
<tr>
<td>Function ID</td>
<td>brightness</td>
<td></td>
</tr>
<tr>
<td>Status</td>
<td>proposed</td>
<td></td>
</tr>
<tr>
<td>Parameter</td>
<td>Name</td>
<td>brightness</td>
</tr>
<tr>
<td></td>
<td>Type</td>
<td>float</td>
</tr>
<tr>
<td></td>
<td>Values</td>
<td>[0.0, 1.0]</td>
</tr>
<tr>
<td></td>
<td>Units</td>
<td>-</td>
</tr>
<tr>
<td></td>
<td>R/W?</td>
<td>Both</td>
</tr>
<tr>
<td>Devices</td>
<td>lights</td>
<td></td>
</tr>
<tr>
<td>Equates to Weave Schema</td>
<td>brightness</td>
<td></td>
</tr>
<tr>
<td>Notes</td>
<td>Using the weave trait range 0.0-1.0.</td>
<td></td>
</tr>
</tbody>
</table>
<br/>
<table class="style0">
<tbody>
<tr>
<td>Function ID</td>
<td>brightness</td>
<td></td>
</tr>
<tr>
<td>Status</td>
<td>proposed</td>
<td></td>
</tr>
<tr>
<td>Parameter</td>
<td>Name</td>
<td>brightnessRelative</td>
</tr>
<tr>
<td></td>
<td>Type</td>
<td>string</td>
</tr>
<tr>
<td></td>
<td>Values</td>
<td>UP, DOWN</td>
</tr>
<tr>
<td></td>
<td>Units</td>
<td>-</td>
</tr>
<tr>
<td></td>
<td>R/W?</td>
<td>W</td>
</tr>
<tr>
<td>Parameter</td>
<td>Name</td>
<td>brightnessRelativeWeight (opt)</td>
</tr>
<tr>
<td></td>
<td>Type</td>
<td>int</td>
</tr>
<tr>
<td></td>
<td>Values</td>
<td>[1,5]</td>
</tr>
<tr>
<td></td>
<td>Units</td>
<td>-</td>
</tr>
<tr>
<td></td>
<td>R/W?</td>
<td>W</td>
</tr>
<tr>
<td>Devices</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Equates to Weave Schema</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Notes</td>
<td>This parameter would be used for ambiguous brightness queries, such as "dim the lights" Optionally support weighting of commands with brightnessRelativeWeight -- 'dim the lights a lot' -> 'DOWN, 5', 'dim the lights a little' -> 'DOWN, 1'.</td>
<td></td>
</tr>
</tbody>
</table>
<br/>
<table class="style0">
<tbody>
<tr>
<td>Function ID</td>
<td>setColor</td>
<td></td>
</tr>
<tr>
<td>Status</td>
<td>proposed</td>
<td></td>
</tr>
<tr>
<td>Parameter</td>
<td>Name</td>
<td>colorTarget</td>
</tr>
<tr>
<td></td>
<td>Type</td>
<td>string</td>
</tr>
<tr>
<td></td>
<td>Values</td>
<td>6 character hex value</td>
</tr>
<tr>
<td></td>
<td>Units</td>
<td>000000-FFFFFF</td>
</tr>
<tr>
<td></td>
<td>R/W?</td>
<td>R/W</td>
</tr>
<tr>
<td>Devices</td>
<td>lights, other color-mutable items</td>
<td></td>
</tr>
<tr>
<td>Equates to Weave Schema</td>
<td>colorXy (see below)</td>
<td></td>
</tr>
<tr>
<td>Notes</td>
<td>We set color by RGB value; backends translate this into the appropriate emittable color based on hardware capabilities.</td>
<td></td>
</tr>
</tbody>
</table>
<br/>
<table class="style0">
<tbody>
<tr>
<td>Function ID</td>
<td>setColor</td>
<td></td>
</tr>