There are many real world applications that are continuously monitored using a large number of heterogeneous sensing devices. Different kinds of sensors, both in terms of technology and functionality, are often simultaneously used within the same application. The integration of data collected using different technologies
(e.g.: Wireless Sensor Networks, RFID tag and GPS) is certainly an interesting challenge, but the different interfaces provided to control and query each involved kind of devices make this goal very hard to achieve. Moreover, social networks and web services can provide a lot of useful data to a pervasive information system and they can be seen as a form of "virtual" sensors.
The PerLa project aims at defining a declarative high level language that allows to query a pervasive system, hiding the difficulties related to the need of handling different technologies. We provide a database like abstraction of the whole network in order to hide the high complexity of low level programming and allowing users to retrieve data from the system in a fast and easy way.
The main aspects that have been considered during the design phase of PerLa language are:
Data representation and abstraction
Physical devices management
Functional language features
Non Functional language features
Taking into account the large heterogeneity of the considered devices, the language is actually split into four sub-languages:
i) a LOW LEVEL LANGUAGE that allows to precisely define the behavior of a single device;
ii) a HIGH LEVEL LANGUAGE, that allows to define data manipulation over the streams coming from low level or other high level queries;
iii) an ACTUATION LANGUAGE that allows to send some commands to the device they are executed on;
iv) a CONTEXT MANAGEMENT sub-language has been designed to deal with context-aware systems in order to define, create and activate contexts and implement context-dependent behaviours.
All sub-languages have an SQL-like syntax, but the low level language semantics is quite different with respect to standard SQL: in fact, specific clauses have been introduced to manage sampling operations. Moreover, the language
has been designed to ease the generation of aggregated data starting from sampled data. On the contrary, the high level language semantics is very similar to that of streaming databases and it allows the connection to external data management systems. Currently, the MySQL relational DBMS and the No-SQL Cassandra system are supported.