182 Personal Content Experience: Managing Digital Life in the Mobile Age We fi nally chose a relational database as a persistent storage for meta- data objects and schemas and consequently, SQL as a query language. Even though a whole network of relationships cannot be expressed in SQL, it excels in handling simple relationships that form the basis of our relationship model. SQL has a long history and is theoretically well understood. Further- more, a countless number of different implementations exist, ranging 29 from embedded devices to huge clusters of data servers. Even though transferring our model into a format that can be stored in a relational table, producing overheads compared to using RDF as a query lan- guage, it still seems to be insignifi cant compared to all positive aspects of using SQL. There are many different commercial SQL implementations avail- 30,31 able for the Symbian operating system and other embedded devices. 32 We tried several alternatives prior to fi nally choosing SQLite as an SQL database engine. SQLite is ideal for mobile devices as it is small, self contained (no need for external support components), and is a one fi le C–library providing almost complete SQL92 query language. It is especially designed to be embedded to other applications and to small devices. SQLite is an open source project and in the public domain, implying that you can use it for anything you like without any licence limitations or requirements to return modifi cations back to the community. It also has an active and keen community supporting it. It has been used in 33 various projects all over the world. Even though SQLite has been ported to almost every existing oper- ating system, there was no publicly available SymbianOS port when we started the implementation. It turned out that porting it to Symbia- nOS was easy, since it has been written in standard C. And Symbian includes a standard C library for just porting legacy C applications. In order to fl exibly change both the SQL implementation we use, and possibly to change to a totally different model like RDF, we have abstracted the persistent metadata storage using SQLite in two phases. First, for an application developer, using our APIs either from Python or Symbian version of C++ manipulates metadata and ontology purely in our own data model, as described earlier. Before manipulating 29 For instance, http://www.oracle.com/technologies/embedded/index.html 30 http://developer.sonyericsson.com/site/global/techsupport/tipstrickscode/symbian/ p_symbian_0602.jsp 31 http://www.sybase.com/products/mobilesolutions 32 http://www.sqlite.org/ 33 http://www.sqlite.org/cvstrac/wiki?p=SqliteUsers

Personal Content Experience - Page 206 Personal Content Experience Page 205 Page 207