Early-bird deadline:

Use FRUCT discount code at booking.com

Find a new job

You are here

SmartSlog: An ANSI C Code Generator for the M3 Platform

Web ontology language (OWL) allows structuring smart space content in high-level terms of classes, relations between them, and their properties. In Smart-M3, a semantic information broker (SIB) maintains the smart space in low-level terms of triples, based on resource description framework (RDF). SmartSlog supports constructing Smart-M3 knowledge processors (KPs) that consume/produce smart space content according to high-level ontology terms. The solution is based on the code generation approach. Given an OWL ontology description, the SmartSlog generator maps OWL to the ontology library. It provides 1) API to communicate with SIB and 2) data structures to represent in KP code all ontology classes, relations, properties, and individuals. As a result, the developer easier constructs the KP code, thinking in high-level ontology terms instead of low-level RDF triples. SmartSlog is oriented to ubiquitous systems; the library is modest to the device capacity; it is written in ANSI C, supports even small embedded devices with restricted performance, and allows interoperable applications.


A smart space (SS) is a virtual, service-centric, multi-user, multi-device, dynamic interaction environment that applies a shared view of resources and services. Any SS consists of information store, information brokers (SIBs), and reasoners. Information is stored conforming to some ontological representation (e.g., RDF, OWL), and it is possible to share the information between devices that do not share the same common representation (the syntax) but rather focus on the semantics.

A client application running at user\\\'s device exploits SS as a publish/subscribe system and consists of one or more knowledge processors (KPs) running cooperatively at the same device. Typically there can be many clients for the same SS. Each KP produces (insert, update, remove) and/or consumes (query, subscribe, unsubscribe) SS content. Ontology describes what information the KP accesses from SS.

Smart-M3 (M3 stands for Multipart, Multidevice, and Multivendor; Smart-M3 is available under open license, see http://sourceforge.net/projects/smart-m3/) is a new functional software platform that implements the SS architecture above. It is developed by NRC Helsinki in partnership with SOFIA and the Devices and Interoperability Ecosystem Project (DIEM). The M3 platform allows multiple applications from multiple vendors to share ad-hoc information across numerous domains, enabling cross domain and cross platform interoperability.

SmartSlog project relates the problem of implementing KPs. In the low-level scenario, a developer writing a KP uses M3 operations and RDF directly, e.g., inserting a set of RDF triples (RDF graph). In contrast, we consider the high-level scenario when she may specify the ontology that describes SS classes and individuals, their relations, and properties. A special tool - ontology library generator – produces API for M3 operations, and the developer uses the API for writing her own KP in the ontology terms. In other words, the API abstracts the given ontology and the communications with SIBs.

In SmartSlog we develop API, their implementation, and tools for the generation. Simple demo applications are constructed as well. It leads to three separate products:

  1. SmartSlog Lib
  2. SmartSlog CodeGen
  3. SmartSlog Demos


Timing and Deliverables

Iteration I: Initial prototype as alpha-releases.

November 2009: Initial plan. Analysis of Smart-M3 platform. Requirements specification.

December 2009: API model & Programming model. Case studies, problem domain, requirements, design.

January 2010: Implementation of alpha0 prototype. Design, internal details, draft code.

February 2010: Coding, testing, debugging, experimenting. Alpha release, user manual, demos. The code is available at SourceForge.

March-May 2010: Finilizing Iteration I. Publishing releases 0.2x, workshop at NRC-Helsinki, demos, Talk at AMICT2010, joint paper to UBICOMM2010.

Iteration II: Optimizations and beta-releases.

June-August 2010: New API. Pattern-based design, starting releases 0.3x.

September-October 2010: Separation into three separate products: 1) SmartSlog CodeGen, 2) SmartSlog Lib, and 3) SmartSlog Demos. Talk at FRUCT8.

November-December 2010: Finalizing Iteration II. CodeGen - support for various ontology manipulations and transformations; Lib - patterns and KP<->SIB optimizations.

Winter 2011: Writing two papers: about CodeGen and about Lib.

Project Team

Contact person: Dmitry G. Korzun, PhD, Adjunct Professor, project leader


  1. Aleksandr Lomov, M.Sc.
  2. Pavel Vanag, M.Sc. Student

Online resources


  • Pavel I. Vanag, Alexandr A. Lomov, Dmitry G. Korzun. SmartSlog: An ANSI C Ontology Library Generator for the Smart-M3 Platform. Talk at the Annual Int\\\'l Workshop on Advances in Methods of Information and Communication Technology (AMICT\\\'2010), May 25 - 27, 2010, Petrozavodsk, Republic of Karelia, Russia.
  • Dmitry G. Korzun, Alexandr A. Lomov, Pavel I. Vanag, Sergey I. Balandin, Jukka Honkola. Generating Modest High-Level Ontology Libraries for Smart-M3. Accepted to the 4th Int\\\'l Conf. on Mobile Ubiquitous Computing, Systems, Services and Technologies (UBICOMM 2010), October 25 - 30, 2010 - Florence, Italy. (PDF)

Related Activity

Final deadline: 
Thursday, December 31, 2009 (All day)