## 1 Introduction  
The Internet of Things (IoT) is an emerging engineering paradigm to build heterogeneous industrial systems for segments such as healthcare, residents, transportation, manufacture, and agriculture. IoT services are provided to the professionals, clients, and providers through the Internet-connected devices at the edge of networks. In the center of networks, powerful computers support sufficient storage and computing ability to enable data saving and processing for smart and ubiquitous applications. In the IoT, the devices are a most important element, which is comprised of information and communication technologies (ICT) to implement the IoT systems in a specific domain or cross-domain of industries. With the development of ICT, the quantity of Internet-connected devices will be increased to reach 20.4 billion by 2020, and the quality also will be enhanced with the deployment of the next generation (5G) communications networks [1; 2]. Therefore, the heterogeneity of devices shall be the challenge because of the increasing number of devices [3]. Moreover, most of the existing services are developed for the hypertext transfer protocol (HTTP)-based web service provider (WSP) on the Internet [4]. However, the IoT frameworks prefer the IoT-specific protocols such as constrained application protocol (CoAP), message queuing telemetry transport (MQTT), and other communication implementations based on those protocols [5]. The IoT system shall support the HTTP-based existing services of WSPs as well as support the constrained and novel IoT-specific protocols. For accessing those massive number of devices in various protocols, the directory service is needed to provide a consistent service to discover the information of objects in the network. In the IoT network, the directory service enables things to be discovered. The functionality of the directory service supports the information of IoT devices to be stored and retrieved [6]. The resource directory (RD) is a server that provides a set of services for enabling the services of discovery in the network where the RD is deployed [7]. The registration and discovery services are the main features of the RD, which are used for registering the information of services to the directory and providing the discovery service to enable the discovery of accessible services by the clients. Services are exposed by the resources to handle the requests from clients and communicate the results to clients [8]. For registering those services' information to the RD, a profile format is required to include the information. The RESTful application programming interface (API) modeling language (RAML) is used for describing the APIs from a service provider such as an IoT device and WSP. The RAML is a framework to describe the APIs using a structured and unambiguous format [9]. RAML data includes the basic information of the service provider, and the introduction of each resource that includes resource uniform resource identifier (URI), request requirements such as query parameters, and request body structure, response body structure, and examples. Therefore, the RAML data can be used for describing the information of resources and registering the resource to the RD. In the IoT network, the server applications are deployed on the devices which have a processor, memory, storage, and network communication module. A server application provides the services which are exposed by the resources in the network [10]. The resource discovery approaches can be used with a multitude of techniques according to the number of parameters such as network scale, deployed devices, and communication protocols. In the IoT network, the devices can be deployed in the constrained networks using the constrained network protocols with limited power supply and computing ability [11]. Moreover, some devices need a stable power supply and sufficient storage to provide services using the professional parts such as e-Health sensors in the wireless body area network (WBAN) [12; 13; 14; 15].