Search Thing Model


根据表达式或模型关系搜索模型。

请求格式

POST https://{apigw-address}/model-service/v2.1/thing-models?action=search

请求参数(URI)

名称 位置(Path/Query) 必需/可选 数据类型 描述
orgId Query 必需 String 模型所属的 OU ID。如何获取 orgId 信息>>
scope Query 可选 Integer
  • 0:只从 orgId 指定的组织搜索;
  • 1:从 orgId 指定的组织和公有模型所在的组织搜索。
  • 2:仅从公有模型中搜索。

该参数默认值为 1。

请求头(Header)

名称 必需/可选 数据类型 描述
response-format-type 可选 String

指定返回结果的结构类型。

  • 仅当值为 response-format-type 时,返回结果为 ThingModel 数组结构体。返回示例,参见 ThingModel 数组结构体。推荐使用该结构,以便与更新版本 Search Thing Model 中默认的返回结果格式一致。
  • 若提供除 response-format-type 以外的其它值,或不提供值,当前版本中将默认使用 Items 数组结构体。返回示例,参见 Items 数组结构体

请求参数(Body)

注解

可使用 expressionrelationFilter 进行搜索,但不能同时使用。

名称 必需/可选 数据类型 描述
expression 可选 String

查询表达式,支持类 SQL 的查询。目前支持查询的字段是 modelIdtagsattribute_tagsmeasurepoint_tagsservice_tagsevent_tags。 支持模糊查询和逻辑运算符 and 和 or。如何使用查询表达式>>

  • modelId: 支持算术运算符 in。
  • tagsattribute_tagsmeasurepoint_tagsservice_tagsevent_tags: 支持算术运算符 =、exists 和 not exists 以及 like。注:EnOS Edge 不支持 tag 相关的查询。
projection 可选 Projection 结构体

对返回结果进行裁剪。对于符合条件的搜索仅返回符合条件的字段,不设置则默认返回全部字段。支持设置的字段有:modelId, modelIdPath, orgId, name, desc, tags, attributes, measurepoints, services, eventsProjection 参数如何对结果集做裁剪>>

注:EnOS Edge 不支持该参数。

pagination 可选 Pagination 结构体 分页参数。如未指定,默认每页 10 条。注意:如果 pageSize 设的偏大,在模型比较大的情况下,接口响应时间会明显增加。为获得最佳性能,建议每页不超过 25 条。不支持使用 sorters 参数对结果进行排序。Pagination 请求结构体>>
relationFilter 可选 RelationFilter 结构体 根据模型之间的关系进行查询。其结构参见 RelationFilter 结构体

RelationFilter 结构体

名称 必需/可选 数据类型 描述
relatedModelId 必需 String 模型 ID。
relationType 必需 String

relatedModelId 的模型的关系类型。一共有两个选项。

  • childOfModel:待查询的模型是 relatedModelId 的直接子节点。
  • descendantOfModel:待查询的模型是 relatedModelId 的子孙节点。

响应参数

名称 数据类型 描述
data ThingModel 数组结构体或 Items 数组结构体

ThingModel 结构体

名称 数据类型 描述
modelId String 模型 ID。
modelIdPath String 模型继承路径。
orgId String 创建该模型的 OU ID。例如,OU B 的某一模型是从 OU A 共享而来,在 OU B 中查询该模型的信息,返回的 OU ID 将是 OU A。
name StringI18n 模型名称。
desc String 模型描述。
category String 模型分类。
tags Map(Key 为 String,Value 为 String) 用户自定义标签。
attributes Map(Key 为 String,Value 为 ThingAttribute 结构体) 静态属性定义的 map 类型值, key 为静态属性ID, value 为属性定义。属性定义的结构参见 ThingAttribute 结构体
measurepoints Map(Key 为 String,Value 为 ThingMeasurepoint 结构体) 测点定义的 map 类型值,key 为测点ID, value 为测点定义。测点定义的结构参见 ThingMeasurepoint 结构体
services Map(Key 为 String,Value 为 ThingService 结构体) 服务定义的 map 类型值, key 为服务ID, value 为服务定义。服务定义的结构参见 ThingService 结构体
events Map(Key 为 String,Value 为 ThingEvent 结构体) 事件定义的 map 类型值, key 为事件ID, value 为事件定义。事件定义的结构参见 ThingEvent 结构体

ThingAttribute 结构体

名称 数据类型 描述
identifier String 属性ID。
dataType String 数据类型。比如:ARRAY、BOOL、DATE、ENUM、INT、FLOAT、DOUBLE、STRUCT、STRING、TIMESTAMP、FILE。
dataDefinition String 本结构体内 datatype 的数据定义,是一个 JSON 字符串。如对于 String 的数据类型,需要定义长度。对于 enum 的数据类型需要定义取值及描述。如何使用 dataDefinition>>
isRequired Boolean 是否是必须的属性。如果为 true,则要求资产在实例化的时候必须设置该属性的值,否则资产在创建的时候会返回校验失败的错误。
defaultValue 根据属性的定义决定

属性的默认值。如果没有设置默认值,则为 null。

注:EnOS Edge 不支持该参数。

name StringI18n 支持国际化的属性名称。
desc String 属性描述。
i18nDesc StringI18n 支持国际化的描述。
tags Map (Key 为 String,Value 为 String) 用户自定义标签。
isStdElement Boolean

是否是标准元素。 true 为是, false 为否。

注:EnOS Edge 不支持该参数。

stdElementId String

当元素是标准元素时,标准元素的URN,其命名格式为 urn:enos:modelelement:std: <id> : <version>id 为元素标识符,<version> 表示元素的版本。如果该元素不是标准元素,则值为 null

注:EnOS Edge 不支持该参数。

unit Unit 结构体 单位。参见 Unit 结构体

ThingMeasurepoint 结构体

名称 数据类型 描述
identifier String 测点 ID
dataType String 数据类型。比如:ARRAY、DATE、ENUM、INT、FLOAT、DOUBLE、STRUCT、STRING、TIMESTAMP、FILE。
dataDefinition String 本结构体内 datatype 的数据定义,是一个 JSON 字符串。如对于 String 的数据类型,需要定义长度。对于 enum 的数据类型需要定义取值及描述。如何使用 dataDefinition>>
name StringI18n 支持国际化的测点名称。
desc String 测点描述。
i18nDesc StringI18n 支持国际化的描述。
tags Map (Key 为 String,Value 为 String) 用户自定义标签。
isStdElement Boolean

是否是标准元素。 true 为是, false 为否。

注:EnOS Edge 不支持该参数。

stdElementId String

当元素是标准元素时,标准元素的 URN,其命名格式为 urn:enos:modelelement:std: <id> : <version>id 为元素标识符,<version> 表示元素的版本。如果该元素不是标准元素,则值为 null

注:EnOS Edge 不支持该参数。

hasQuality Boolean 是否有质量位。
signalType String 信号类型。有如下类型:Generic、AI、PI、DI。
unit Unit 结构体 单位。参见 Unit 结构体

ThingService 结构体

名称 数据类型 描述
identifier String 服务 ID。
name StringI18n 支持国际化的服务名称。
desc String 服务描述。
i18nDesc StringI18n 支持国际化的描述。
tags Map (Key 为 String,Value 为 String) 用户自定义标签。
isStdElement Boolean

是否是标准元素。 true 为是, false 为否。

注:EnOS Edge 不支持该参数。

stdElementId String

当元素是标准元素时,标准元素的 URN,其命名格式为 urn:enos:modelelement:std: <id> : <version>id 为元素标识符,<version> 表示元素的版本。如果该元素不是标准元素,则值为 null

注:EnOS Edge 不支持该参数。

inputData ThingDatapoint 结构体 Service 的入参列表。 参数定参见 ThingDatapoint 结构体
outputData ThingDatapoint 结构体 Service 返回参数列表。 参数定参见 ThingDatapoint 结构体
callType String 注意:callType 已废弃,未来会删除,请不要使用。调用类型。 SYNC 表示同步, ASYNC 表示异步。

ThingEvent 结构体

名称 数据类型 描述
identifier String 事件 ID。
name StringI18n 支持国际化的事件名称。
desc String 事件描述。
i18nDesc StringI18n 支持国际化的描述。
tags Map (Key 为 String,Value 为 String) 用户自定义标签。
isStdElement Boolean

是否是标准元素。 true 为是, false 为否。

注:EnOS Edge 不支持该参数。

stdElementId String

当元素是标准元素时,标准元素的URN,其命名格式为 urn:enos:modelelement:std: <id> : <version>id 为元素标识符,<version> 表示元素的版本。如果该元素不是标准元素,则值为 null

注:EnOS Edge 不支持该参数。

outputData ThingDatapoint 结构体 Event返回参数列表。 参数定参见 ThingDatapoint 结构体
eventType String 事件类型。有 INFOWARNERROR 三种取值。

ThingDatapoint 结构体

名称 数据类型 描述
identifier String 点 ID。
dataType String 数据类型。比如:ARRAY、DATE、ENUM、INT、FLOAT、DOUBLE、STRUCT、STRING、TIMESTAMP、FILE。
dataDefinition String 本结构体内 datatype 的数据定义,是一个 JSON 字符串。如对于 String 的数据类型,需要定义长度。对于 enum 的数据类型需要定义取值及描述。如何使用 dataDefinition>>
name StringI18n 支持国际化的测点名称。
desc String 测点描述。
i18nDesc StringI18n 支持国际化的描述。
tags Map (Key 为 String,Value 为 String) 用户自定义标签。
isStdElement Boolean

是否是标准元素。 true 为是, false 为否。

注:EnOS Edge 不支持该参数。

stdElementId String

当元素是标准元素时,标准元素的 URN,其命名格式为 urn:enos:modelelement:std: <id> : <version>id 为元素标识符,<version> 表示元素的版本。如果该元素不是标准元素,则值为 null

注:EnOS Edge 不支持该参数。

unit Unit 结构体 单位。参见 Unit 结构体

Unit 结构体

名称 数据类型 描述
unitId String 单位的标识符。
multiplier String 单位的乘数。参见 Multiplier

Multiplier

单位的乘数有如下取值:

YOTTA ,//Y     10^24
ZETTA ,//Z     10^21
EXA   ,//E     10^18
PETA  ,//P     10^15
TERA  ,//T     10^12
GIGA  ,//G     10^9
MEGA  ,//M     10^6
KILO  ,//k     10^3
HECTO ,//h     10^2
DECA  ,//da    10^1
ONE   ,//      10^0
DECI  ,//d     10^-1
CENTI ,//c     10^-2
MILLI ,//m     10^-3
MICRO ,//μ     10^-6
NANO  ,//n     10^-9
PICO  ,//p     10^-12
FEMTO ,//f     10^-15
ATTO  ,//a     10^-18
ZEPTO ,//z     10^-21
YOCTO ,//y     10^-24

示例

请求示例

根据表达式搜索

url: https://{apigw-address}/model-service/v2.1/thing-models?action=search&orgId=yourOrgId&scope=1
method: POST
requestBody:
{
  "expression": "modelId in ('planet', 'noiseSensor')", // tags example: "tags.abc like '123'"
  "pagination": {
    "pageNo": 1,
    "pageSize": 10
    }
}

根据模型关系搜索

url: https://{apigw-address}/model-service/v2.1/thing-models?action=search&orgId=yourOrgId&scope=1
method: POST
requestBody:
{
    "relationFilter": {
        "relatedModelId": "modelId",
        "relationType": "childOfModel"
    },
    "pagination": {
        "pageNo": 1,
        "pageSize": 10
    }
}

返回示例

ThingModel 数组结构体

{
    "code":0,
    "msg":"OK",
    "requestId":"c6594307-bc30-4380-9869-b8a88b9494de",
    "data":[
        {
            "modelId":"planet",
            "modelIdPath":"/planet",
            "orgId":"yourOrgId",
            "name":{
                "defaultValue":"planet",
                "i18nValue":{
                    "en_US":"planet"
                }
            },
            "desc":"Planet",
            "category":"Planets",
            "tags":{

            },
            "attributes":{
                "starsystem":{
                    "identifier":"starsystem",
                    "name":{
                        "defaultValue":"star system",
                        "i18nValue":{
                            "en_US":"star system"
                        }
                    },
                    "desc":"Star system 1",
                    "i18nDesc":{
                        "defaultValue":"Star system 1",
                        "i18nValue":{
                            "en_US":"Star system 1",
                            "zh_CN":"星系 1"
                      }
                    },
                    "tags":{

                    },
                    "stdElementId":"urn:user:modelelement:std:atom-property-int:1.0",
                    "isStdElement":true,
                    "dataType":"STRING",
                    "unit":null,
                    "isRequired":false,
                    "defaultValue":null
                }
            },
            "measurepoints":{
                "temperature":{
                    "identifier":"temperature",
                    "name":{
                        "defaultValue":"temperature",
                        "i18nValue":{
                            "en_US":"temperature"
                        }
                    },
                    "desc":"Temperature",
                    "i18nDesc":{
                        "defaultValue":"Temperature",
                        "i18nValue":{
                            "en_US":"Temperature",
                            "zh_CN":"温度"
                      }
                    },
                    "tags":{

                    },
                    "stdElementId":"urn:user:modelelement:std:atom-property-int:1.0",
                    "isStdElement":true,
                    "dataType":"FLOAT",
                    "hasQuality":false,
                    "signalType":"Generic",
                    "unit":{
                        "unitId":"°C",
                        "multiplier":"ONE"
                    }
                }
            },
            "services":{
                "speedup":{
                    "identifier":"speedup",
                    "name":{
                        "defaultValue":"speedup",
                        "i18nValue":{
                            "en_US":"speedup"
                        }
                    },
                    "desc":"Speedup",
                    "i18nDesc":{
                        "defaultValue":"Speedup",
                        "i18nValue":{
                            "en_US":"Speedup",
                            "zh_CN":"加速"
                      }
                    },
                    "tags":{

                    },
                    "outputData":[
                        {
                            "identifier":"delta",
                            "name":{
                                "defaultValue":"delta",
                                "i18nValue":{
                                    "en_US":"delta"
                                }
                            },
                            "desc":"Delta",
                            "i18nDesc":{
                                "defaultValue":"Delta",
                                "i18nValue":{
                                    "en_US":"Delta",
                                    "zh_CN":"Delta 描述"
                                }
                            },
                            "tags":{

                            },
                            "dataType":"INT",
                            "unit":null
                        }
                    ],
                    "inputData":[
                        {
                            "identifier":"delta",
                            "name":{
                                "defaultValue":"delta",
                                "i18nValue":{
                                    "en_US":"delta"
                                }
                            },
                            "desc":"Delta",
                            "i18nDesc":{
                                "defaultValue":"Delta",
                                "i18nValue":{
                                    "en_US":"Delta",
                                    "zh_CN":"Delta 描述"
                                }
                            },
                            "tags":{

                            },
                            "dataType":"INT",
                            "unit":{
                                "unitId":"rpm",
                                "multiplier":"ONE"
                            },
                            "isRequired":false,
                            "defaultValue":3
                        }
                    ],
                    "callType":"ASYNC"
                }
            },
            "events":{
                "alert":{
                    "identifier":"alert",
                    "name":{
                        "defaultValue":"alert",
                        "i18nValue":{
                            "en_US":"alert"
                        }
                    },
                    "desc":"Alert",
                    "i18nDesc":{
                        "defaultValue":"Alert",
                        "i18nValue":{
                            "en_US":"Alert",
                            "zh_CN":"告警"
                      }
                    },
                    "tags":{

                    },
                    "outputData":[
                        {
                            "identifier":"event1",
                            "name":{
                                "defaultValue":"event1",
                                "i18nValue":{
                                    "en_US":"event1"
                                }
                            },
                            "desc":"Event 1",
                            "i18nDesc":{
                                "defaultValue":"Event 1",
                                "i18nValue":{
                                    "en_US":"Event 1",
                                    "zh_CN":"事件 1"
                                }
                            },
                            "tags":{

                            },
                            "dataType":"INT",
                            "unit":null
                        }
                    ],
                    "eventType":"ERROR"
                }
            }
        },
        {
            "modelId":"noiseSensor",
            "modelIdPath":"/noiseSensor",
            "orgId":"yourOrgId",
            "name":{
                "defaultValue":"Noise Sensor",
                "i18nValue":{
                    "en_US":"Noise Sensor"
                }
            },
            "desc":"Noise Sensor",
            "category":"Sensors",
            "tags":{
                "group":"1"
            },
            "attributes":{

            },
            "measurepoints":{

            },
            "services":{

            },
            "events":{

            }
        }
    ],
    "pagination":{
        "pageNo":1,
        "pageSize":10,
        "totalSize":2
    }
}

Items 数组结构体

{
    "code": 0,
    "msg": "OK",
    "requestId": "f1364494-fda1-4d28-b1a3-bfbe88c743d7",
    "data": {
        "items": [
            {
            "modelId":"planet",
            "modelIdPath":"/planet",
            "orgId":"yourOrgId",
            "name":{
                "defaultValue":"planet",
                "i18nValue":{
                    "en_US":"planet"
                }
            },
            "desc":"Planet",
            "category":"Planets",
            "tags":{

            },
            "attributes":{
                "starsystem":{
                    "identifier":"starsystem",
                    "name":{
                        "defaultValue":"star system",
                        "i18nValue":{
                            "en_US":"star system"
                        }
                    },
                    "desc":"Star system 1",
                    "i18nDesc":{
                        "defaultValue":"Star system 1",
                        "i18nValue":{
                            "en_US":"Star system 1",
                            "zh_CN":"星系 1"
                      }
                    },
                    "tags":{

                    },
                    "stdElementId":"urn:user:modelelement:std:atom-property-int:1.0",
                    "isStdElement":true,
                    "dataType":"STRING",
                    "unit":null,
                    "isRequired":false,
                    "defaultValue":null
                }
            },
            "measurepoints":{
                "temperature":{
                    "identifier":"temperature",
                    "name":{
                        "defaultValue":"temperature",
                        "i18nValue":{
                            "en_US":"temperature"
                        }
                    },
                    "desc":"Temperature",
                    "i18nDesc":{
                        "defaultValue":"Temperature",
                        "i18nValue":{
                            "en_US":"Temperature",
                            "zh_CN":"温度"
                      }
                    },
                    "tags":{

                    },
                    "stdElementId":"urn:user:modelelement:std:atom-property-int:1.0",
                    "isStdElement":true,
                    "dataType":"FLOAT",
                    "hasQuality":false,
                    "signalType":"Generic",
                    "unit":{
                        "unitId":"°C",
                        "multiplier":"ONE"
                    }
                }
            },
            "services":{
                "speedup":{
                    "identifier":"speedup",
                    "name":{
                        "defaultValue":"speedup",
                        "i18nValue":{
                            "en_US":"speedup"
                        }
                    },
                    "desc":"Speedup",
                    "i18nDesc":{
                        "defaultValue":"Speedup",
                        "i18nValue":{
                            "en_US":"Speedup",
                            "zh_CN":"加速"
                      }
                    },
                    "tags":{

                    },
                    "outputData":[
                        {
                            "identifier":"delta",
                            "name":{
                                "defaultValue":"delta",
                                "i18nValue":{
                                    "en_US":"delta"
                                }
                            },
                            "desc":"Delta",
                            "i18nDesc":{
                                "defaultValue":"Delta",
                                "i18nValue":{
                                    "en_US":"Delta",
                                    "zh_CN":"Delta 描述"
                                }
                            },
                            "tags":{

                            },
                            "dataType":"INT",
                            "unit":null
                        }
                    ],
                    "inputData":[
                        {
                            "identifier":"delta",
                            "name":{
                                "defaultValue":"delta",
                                "i18nValue":{
                                    "en_US":"delta"
                                }
                            },
                            "desc":"Delta",
                            "i18nDesc":{
                                "defaultValue":"Delta",
                                "i18nValue":{
                                    "en_US":"Delta",
                                    "zh_CN":"Delta 描述"
                                }
                            },
                            "tags":{

                            },
                            "dataType":"INT",
                            "unit":{
                                "unitId":"rpm",
                                "multiplier":"ONE"
                            },
                            "isRequired":false,
                            "defaultValue":3
                        }
                    ],
                    "callType":"ASYNC"
                }
            },
            "events":{
                "alert":{
                    "identifier":"alert",
                    "name":{
                        "defaultValue":"alert",
                        "i18nValue":{
                            "en_US":"alert"
                        }
                    },
                    "desc":"Alert",
                    "i18nDesc":{
                        "defaultValue":"Alert",
                        "i18nValue":{
                            "en_US":"Alert",
                            "zh_CN":"告警"
                      }
                    },
                    "tags":{

                    },
                    "outputData":[
                        {
                            "identifier":"event1",
                            "name":{
                                "defaultValue":"event1",
                                "i18nValue":{
                                    "en_US":"event1"
                                }
                            },
                            "desc":"Event 1",
                            "i18nDesc":{
                                "defaultValue":"Event 1",
                                "i18nValue":{
                                    "en_US":"Event 1",
                                    "zh_CN":"事件 1"
                                }
                            },
                            "tags":{

                            },
                            "dataType":"INT",
                            "unit":null
                        }
                    ],
                    "eventType":"ERROR"
                }
            }
        },
        {
            "modelId":"noiseSensor",
            "modelIdPath":"/noiseSensor",
            "orgId":"yourOrgId",
            "name":{
                "defaultValue":"Noise Sensor",
                "i18nValue":{
                    "en_US":"Noise Sensor"
                }
            },
            "desc":"Noise Sensor",
            "category":"Sensors",
            "tags":{
                "group":"1"
            },
            "attributes":{

            },
            "measurepoints":{

            },
            "services":{

            },
            "events":{

            }
        }
        ],
        "sortedBy": null,
        "pageNo": 1,
        "pageSize": 10,
        "totalRecord": 2
    }
}

Java SDK 调用示例

根据表达式搜索

public class SearchThingModel {
    private static String accessKey = "yourAppAccessKey";
    private static String secretKey = "yourAppSecretKey";
    private static String orgId = "yourOrgId";
    private static String url = "https://{apigw-address}";
    public static void main(String[] args) {
        SearchThingModelRequest request = new SearchThingModelRequest();
        request.setOrgId(orgId);
        request.setExpression("modelId in ( \"planet\" )");
        Projection projection = new Projection();
        projection.add("modelId");
        projection.add("name");
        request.setProjection(projection);
        SearchThingModelResponse response = Poseidon.config(PConfig.init().appKey(accessKey).appSecret(secretKey).debug())
                .url(url)
                .getResponse(request, request.getResponseClass());
        System.out.println(response.getData());
    }
}

根据模型关系搜索

public class SearchModel {
    private static String accessKey = "yourAppAccessKey";
    private static String secretKey = "yourAppSecretKey";
    private static String orgId = "yourOrgId";
    private static String url = "https://{apigw-address}";
    public static void main(String[] args) {

        SearchThingModelRequest request = new SearchThingModelRequest();
        request.setOrgId(orgId);
        RelationFilter relationFilter = new RelationFilter();
        relationFilter.setRelatedModelId("modelId");
        relationFilter.setRelationType(RelationFilter.RELATION_TYPE_CHILD_OF_MODEL);
        request.setRelationFilter(relationFilter);
        Projection projection = new Projection();
        projection.add("modelId");
        projection.add("name");
        request.setProjection(projection);
        SearchThingModelResponse response = Poseidon.config(PConfig.init().appKey(accessKey).appSecret(secretKey).debug())
                .url(url)
                .getResponse(request, SearchThingModelResponse.class);
        System.out.println(response);
    }
}