TD: Introduction

곽아은·2023년 9월 3일
0

Thing Description

목록 보기
1/1
post-thumbnail

https://w3c.github.io/wot-thing-description/

Thing Description

  • W3C 사물 웹(WoT)의 중심 구성 요소이며 사물의 진입점

구성요소

  • 사물 자체에 대한 텍스트 메타데이터
  • 상호 작용 어포던스 집합
  • 사물과의 교환 데이터에 대한 스키마
  • 상호작용에 관한 보안 정의
  • 웹의 다른 사물 또는 문서에 대한 관계를 표현하는 웹 링크

Interaction Model

  • Property
  • Action
  • Event

PropertyAffordance class

현재 값을 가져오거나 동작 상태를 설정하는 등의 파라미터를 감지하고 제어

ActionAffordance class

물리적(따라서 시간이 많이 소요되는) 프로세스의 호출이지만, 기존 플랫폼의 RPC와 같은 호출을 추상화하는 데 사용될 수 있음

EventAffordance class

알림, 이산 이벤트 또는 값의 스트림이 수신기에 비동기적으로 전송되는 통신의 푸시 모델에 사용

Example 1

{
    "@context": "https://www.w3.org/2022/wot/td/v1.1",
    "id": "urn:uuid:0804d572-cce8-422a-bb7c-4412fcd56f06",
    "title": "MyLampThing",
    "securityDefinitions": {
        "basic_sc": {"scheme": "basic", "in": "header"} 
    },
    "security": "basic_sc",
    "properties": {
        "status": {
            "type": "string",
            "forms": [{"href": "https://mylamp.example.com/status"}]
        }
    },
    "actions": {
        "toggle": {
            "forms": [{"href": "https://mylamp.example.com/toggle"}]
        }
    },
    "events": {
        "overheating": {
            "data": {"type": "string"},
            "forms": [{
                "href": "https://mylamp.example.com/oh",
                "subprotocol": "longpoll"
            }]
        }
    }
}

Interaction Model

  • property affordance
  • action affordance
  • event affordance
    • overheating: 램프의 과열 가능성이 있는 이벤트에 대한 subscription은 https://mylamp.example.com/oh 에서 long polling 하위 프로토콜과 함께 HTTP를 사용하여 가능

Security

  1. securityDefinitions에서 보안 체계 이름 지정
  2. security에서 해당 이름으로 사용
  3. 최상위 레벨에서 적어도 하나의 보안 체계를 지정하는 것은 필수

Example 2: namespace 설정

{
    "@context": [
        "https://www.w3.org/2022/wot/td/v1.1",
        { "saref": "https://w3id.org/saref#" }
    ],
    "id": "urn:uuid:300f4c4b-ca6b-484a-88cf-fd5224a9a61d",
    "title": "MyLampThing",
    "@type": "saref:LightSwitch",
    "securityDefinitions": {
        "basic_sc": {"scheme": "basic", "in": "header"}
    },
    "security": "basic_sc",
    "properties": {
        "status": {
            "@type": "saref:OnOffState",
            "type": "string",
            "forms": [{
                "href": "https://mylamp.example.com/status"
            }]
        }
    },
    "actions": {
        "toggle": {
            "@type": "saref:ToggleCommand",
            "forms": [{
                "href": "https://mylamp.example.com/toggle"
            }]
        }
    },
    "events": {
        "overheating": {
            "data": {"type": "string"},
            "forms": [{
                "href": "https://mylamp.example.com/oh"
            }]
        }
    }
}

sref

  • https://w3id.org/saref
  • "Smart Appliance Reference Ontology"의 약어로, 스마트 가전제품과 관련된 정보를 표현하기 위한 온톨로지

Namespace

  • Thing Description은 일부 네임스페이스에 문맥적 정의를 추가할 수 있는 기능을 제공
  • Example 2는 @context에 namespace 정의를 도입하여 SAREF [SMARTM2M]을 참조하여 접두사 saref를 선언

Namespace in TD

VocabularyNamespace IRI
Corehttps://www.w3.org/2019/wot/td#
Data Schemahttps://www.w3.org/2019/wot/json-schema#
Securityhttps://www.w3.org/2019/wot/security#
Hypermedia Controlshttps://www.w3.org/2019/wot/hypermedia#

Namespace in TM

VocabularyNamespace IRI
Thing Modelhttps://www.w3.org/2022/wot/tm#

Thing Model

  • Thing Description: 장치의 기본 메타데이터를 포함하는 메타데이터 문서
  • Thing Model: 특정 장치 또는 시스템의 동작과 상호 작용을 더 추상적으로 모델링하는 문서
  • Thing Model 정의로부터 유효한 Thing Description 인스턴스를 도출

Example 3: Thing Model Sample

{
    "@context": ["https://www.w3.org/2022/wot/td/v1.1"], 
    "@type": "tm:ThingModel",
    "title": "Lamp Thing Model",
    "properties": {
        "status": {
            "description": "current status of the lamp (on|off)",
            "type": "string",
            "readOnly": true
        }
    },
    "actions": {
        "toggle": {
            "description": "Turn the lamp on or off"
        }
    },
    "events": {
        "overheating": {
            "description": "Lamp reaches a critical temperature (overheating)",
            "data": {"type": "string"}
        }
    }
}
  • 정의: “@type": "tm:ThingModel”
  • 단일 Thing 인스턴스가 아니므로 메타데이터 세부 정보를 제공하지 않음

1개의 댓글

comment-user-thumbnail
2023년 10월 22일

ㅋㅋ

답글 달기