Tiếp tục chuỗi bài giới thiệu về SensorThings API, bài này sẽ tập trung trình bày về IoT Modeling with Open Standards. Nội dung về chủ đề được thể hiên ở hình vẽ sau:
Hình 1: Sơ đồ hình dư liệu IoT được áp dụng cho SensorThings API
- Thing – là một đối tượng của thế giới vật chất (vật chất) hoặc thế giới thông tin có khả năng được xác định và tích hợp vào các mạng truyền thông
Thuộc tính | Định nghĩa | Kiểu dữ liệu | Yêu cầu, số lượng |
name | Thuộc tính cung cấp nhãn cho thực thể Thing, thường là một cái tên mô tả. | CharacterString | Bắt buộc – 1 |
description | Một mô tả ngắn gọn về thực thể Thing tương ứng. | CharacterString | Bắt buộc – 1 |
properties | Đối tượng JSON chứa các thuộc tính được chú thích bởi người dùng sử dung cặp key-value. | JSON Object | Có thể có hoặc không |
Bảng 1: Thuộc tính của thực thể Thing
- Location của Thing được định nghĩa là vị trí cuối cùng được biết đến của Thing. Trong bối cảnh của IoT, vị trí quan trọng được quan tâm thường gắn liền với vị trí của Thing, đặc biệt đối với các ứng dụng cảm ứng tại chỗ.Tuy nhiên, vị trí cuối cùng của sự quan tâm của Thing không phải lúc nào cũng là vị trí của Thing (ví dụ, trong trường hợp viễn thám).
Tên | Định nghĩa | Kiểu dữ liệu | Yêu cầu, số lượng |
name | Thuộc tính cung cấp nhãn cho thực thể Location, thường là một cái tên mô tả. | CharacterString | bắt buộc , 1 |
description | Mô tả về Vị trí. | CharacterString | bắt buộc, 1 |
encodingType | Loại mã hóa của thuộc tính Location. Giá trị của nó là một trong các Enumeration ValueCode | ValueCode | bắt buộc , 1 |
location | Loại vị trí được xác định bằng encodingType | bắt buộc,1 |
Bảng 2: Thuộc tính của thực thể Location
Ví dụ về Location Entity:
{ “@iot.id”: 1,
“@iot.selfLink”: “http://example.org/v1.0/Locations(1)”,
“Things@iot.navigationLink”: “Locations(1)/Things”,
“HistoricalLocations@iot.navigationLink”: “Locations(1)/HistoricalLocations”,
“encodingType”: “application/vnd.geo+json”, “name”: “CCIT”,
“description”: “Calgary Center for Innvative Technologies”,
“location”: { “type”: “Feature”, “geometry”:{ “type”: “Point”, “coordinates”: [-114.06,51.05] } } }
- HistoricalLocation cung cấp thời gian về vị trí hiện tại (tức là, được biết lần cuối) và vị trí trước đây của Thing.
Thuộc tính | Định nghĩa | Kiểu dữ liệu | Yêu cầu, số lượng |
time | Thời điểm khi Thing được biết đến tại Location. | TM_Instant (ISO-8601 Time String) | Bắt buộc, 1 |
Bảng 3: Thuộc tính của thực thể HistoricalLocation
Ví dụ về HistoricalLocation Entity
{
“@iot.id“: 1,
“@iot.selfLink“: “http://example.org/v1.0/HistoricalLocations(1)”,
“[email protected]“: “HistoricalLocations(1)/Locations”,
“[email protected]“: “HistoricalLocations(1)/Thing”,
“time“: “2015-01-25T12:00:00-07:00”
}
Một Datastream nhóm một bộ sưu tập Các quan sát đo cùng một ObservedProperty và được sản xuất bởi cùng một Sensor.
Thuộc tính | Định nghĩa | Kiểu dữ liệu | Yêu cầu , số lượng |
name | Thuộc tính cung cấp nhãn cho đối tượng Datastream, thường là một tên mô tả. | CharacterString | Bắt buộc, 1 |
description | Mô tả của thực thể Datastream. | CharacterString | Bắt buộc, 1 |
unitOfMeasurement | Các giá trị của các thuộc tính này NÊN theo Bộ quy tắc Thống nhất cho Đơn vị Đo lường (UCUM). | JSON Object | Bắt buộc, 1 Lưu ý: Khi Datastream không có đơn vị đo lường (ví dụ: một loại OM_TruthObservation), thì các thuộc tính tương ứng của Tài sản Tự động có giá trị rỗng. |
observationType | Loại Quan sát (với loại kết quả duy nhất), được sử dụng bởi dịch vụ để mã hoá các quan sát. | ValueCode Xem bảng 5 | bắt buộc, 1 |
observedArea | Vùng giới hạn không gian trong phạm vi không gian của tất cả FeatureofInterest t liên quan đến Datastream này. | GM_Envelope (GeoJSON Polygon) | không bắt buộc, tối đa 1 |
phenomenonTime | Khoảng thời gian tại thời điểm hiện tại của tất cả các quan sát | TM_Period (ISO 8601 Time Interval) | không bắt buộc, tối đa 1 |
resultTime | Khoảng thời gian tại mà lúc kết quả được trả về | TM_Period (ISO 8601 Time Interval) | không bắt buộc, tối đa 1 |
Bảng 4: Thuộc tính của thực thể Datastream
O&M 2.0 | Value Code Value (observationType names) | Content of result |
OM_CategoryObservation | http://www.opengis.net/def/observationType/OGC-OM/2.0/OM_CategoryObservation | URI |
OM_CountObservation | http://www.opengis.net/def/observationType/OGC-OM/2.0/OM_CountObservation | integer |
OM_Measurement | http://www.opengis.net/def/observationType/OGC-OM/2.0/OM_Measurement | double |
OM_Observation | http://www.opengis.net/def/observationType/OGC-OM/2.0/OM_Observation | Any |
OM_TruthObservation | http://www.opengis.net/def/observationType/OGC-OM/2.0/OM_TruthObservation | boolean |
Bảng 5: Danh sách một số giá trị mã được dùng để xác định các loại được định nghĩa trong mô hình O&M (OGC 10-004r3 và ISO 19156: 2011 khoản 8.2.2)
Ví dụ về Datastream:
{ “@iot.id”: 1,
“@iot.selfLink”: “http://example.org/v1.0/Datastreams(1)”,
“Thing@iot.navigationLink”: “HistoricalLocations(1)/Thing”,
“Sensor@iot.navigationLink”: “Datastreams(1)/Sensor”,
“ObservedProperty@iot.navigationLink”: “Datastreams(1)/ObservedProperty”, “Observations@iot.navigationLink”: “Datastreams(1)/Observations”,
“name”: “oven temperature”,
“description”: “This is a datastream measuring the air temperature in an oven.”,
“unitOfMeasurement”: { “name”: “degree Celsius”, “symbol”: “°C”, “definition”: “http://unitsofmeasure.org/ucum.html#para-30” }, “observationType”: “http://www.opengis.net/def/observationType/OGC-OM/2.0/OM_Measurement”, “observedArea”: { “type”: “Polygon”, “coordinates”: [[[100,0],[101,0],[101,1],[100,1],[100,0]]] },
“phenomenonTime”: “2014-03-01T13:00:00Z/2015-05-11T15:30:00Z”,
“resultTime”: “2014-03-01T13:00:00Z/2015-05-11T15:30:00Z”
}
Nội dung về “IoT Data Modeling with Open Standars ” sẽ tiếp tục được trình bày trong các bài viết sau.
Tài liệu tham khảo: http://docs.opengeospatial.org/is/15-078r6/15-078r6.html#27