About

The eLog library was initially developed as a research prototype and later published for lifelogging researchers in 2010 to help them easily analyze heterogenous data and complex visualization. It has been kept growing with the progress of mobile computing environments and recently its UI part is released with GPL v3 license for wider usage. The eLog UI library is optimized for mobile environment and can get easily integrated with existing Web services.

Who We Are

The original work was proposed by Pil Ho and later extended the work with collaboration with 28 researchers around the world who contributed their lifelogs, collaborated for lifelog analysis and share research results to build up an open lifelogging platform for the public. Pil Ho has been keeping the development updating the library following up the progress in mobile computing.

Updates

  • Nov. 2014: Change the web page skin using bootstrap.
  • Nov. 2014: Published elog UI library as GPL v3.
  • Oct. 2014: Version up eLog library and documentation.

 

EML BNF Specification

! -----------------------------------------------------------------------------------
! E-model language (EML)
!
! An E-model prototype is built on top of relational database. 
! Its full functions are implemented using hundreds of SQL procedures
! and functions. The idea is when a database system adds the E-model 
! database to existing databases, then a user can query the database 
! in the mixture of structured queries in addition to E-model queries. 
! EML implements such ideas by extending the SQL language to support 
! both structured and unstructured queries with various feature additions. 
!
! Update:
!   03/29/2009 Preliminary EML design
!   06/05/2009 Add chain expression in Id list
!
! Note: This is a preliminary version of the EML based on the SQL 89 grammar 
! at http://www.devincook.com/goldparser/grammars/index.htm.
!
! Note, 05/02/2010: Add supports to _parent, _child, _parent[%d], _child[%d] namespaces
! Note, 06/02/2010: Add supports to Id without child specification in WHEN clause
! Note, 10/16/2010: Add supports functions like second, year as the type specifier
!                   ex) WHEN ABS(t3 - t4) <= 30 SECOND;
! -----------------------------------------------------------------------------------

"Name"         = 'E-model language (EML)'
"Author"       = 'Pilho Kim'
"Version"      = '03/26/2011'
"About"        = 'EML is an extended SQL language developed on top of E-model.'

"Start Symbol" = 

! =============================================================================
! Comments
! =============================================================================

Comment Start = '/*'
Comment End   = '*/'
Comment Line  = '--'

! =============================================================================
! Terminals
! =============================================================================

{String Ch 1}      = {Printable} - ["]
{String Ch 2}      = {Printable} - ['']
{Id Ch Standard}   = {Alphanumeric} + [_] + ['*']
{Id Ch Extended}   = {Printable} - ['['] - [']']

StringLiteral   = '"'{String Ch 1}*'"' | ''{String Ch 2}*''
IntegerLiteral  = {Digit}+
RealLiteral     = {Digit}+'.'{Digit}+

! =============================================================================
! EML namespace
! =============================================================================

! Extension for EML, allow * to specify whole database
{EML Id Ch}   = {Letter} + ['_'] + ['*']

!----- Identifiers in SQL are very complex. 
! Id             = ({Letter}{Id Ch Standard}* | '['{Id Ch Extended}+']')  ('.'({Letter}{Id Ch Standard}* | '['{Id Ch Extended}+']'))?
! Support _* expression that specify the whole databases and tables
! Allow chain expression
! Id  = ({EML Id Ch}{Id Ch Standard}* | '['{Id Ch Extended}+']') ('.'({EML Id Ch}{Id Ch Standard}* | '['{Id Ch Extended}+']'))?
Id  = ({EML Id Ch}{Id Ch Standard}* | '['{Id Ch Extended}+']') ('.'({EML Id Ch}{Id Ch Standard}* | '['{Id Ch Extended}+']'))*


! =============================================================================
! Rules
! =============================================================================

! Support EndofStatement ';'
       ::=  
                |  
                |  
                |  
                |  
                | 
                  | INSERT INTO Id '('  ')' VALUES '('  ')'

    ::= UPDATE Id SET   

   ::= Id '='  ',' 
                  | Id '='  

    ::= DELETE FROM Id  

! =============================================================================
! Select Statement
! =============================================================================

! Add LIMIT
 ')'
                | '('  ')'

  ::=  ',' 
               | 

     ::=  ','  
                | 

!    ::= Id
!                | Id Id

! Support 'AS' and sub query
   ::= Id
                | Id Id
                | Id AS Id
                | '('  ')' Id
                | '('