header2
bio projects contact
computer graphics
computer graphics
cvision
search
programming
design

 

Project Overview: Photo Event Markup Language (PEXML)
Developed an event-based application to search for images

Software: Java GUI interface and XQuery using Berkeley XML DB API

Project Overview
The goal of this research project was to develop a system that helps users to organize, display and retrieve photos by automating this tedious and time consuming manual organizational process. PEXML incorporates the concept of events to describe photos, storing them in an "album" like directory, where the user assigns a specific event to each folder and can add, edit, append and query photos. Our group developed an XML schema that best represents an organized hierarchy of events where each photo has information tagged to it. Each photo has an XML file associated with it containing information about the photo, such as EXIF data as well as manually insert information about the image and is then organized in an XML file and use XQUERY to search within structured tags allowing the user to add, edit and append to our database. PEXML searches within these tags to retrieve photos from user queries.

My responsibilities included the user interface and run-time interaction. In developing the interface, we sought to build a system which enhanced the user's experience by exposing the event structure in the presentation space. Through this graphical tree structure the user is able to make a clear conceptual model of how PEXML organizes images based on events.

Grade received: A.

Organizing an Event Based System
Created an XML schema that best represents an organized hierarchy of events. These events should describe the photos in the event, along with other events inside that event. Using nested events allows the project to be organized around events rather than keywords. PEXML uses XML to organize the photos and developed a schema that was centralized around events. The basic structure of the XML Schema used in PEXML starts by declaring an event and then listing events inside that event. Each event contains elements which help define the event along with the photos associated with that layer of the event. The name specifies the name of the event taking place, the location specifies the real-world location of where the event is taking place, photo contains the photos that correspond to that layer of the event, and event contains a whole other event with the same XML structured shown here.
xmlSample
The schema shown in figure 1.1 shows the schema used in the PEXML system and figure 1.2 shows a sample of how the schema is applied to an XML file. Zero to an infinite amount of pictures may be added to a single event. Within the event named “Entering the Park” which is nested in the event named “Trip to Universal Studios”, there are multiple photos associated with that event. Each photo has its own elements: name, location of the file, date the image was taken, time, and people in the picture. The element people can consists of 0 or more people in the picture. Each person’s name is given the name node of the file. The main part of the photo structure, however, is the location. This is what we will present to the user when query time comes. If the user wants to find a person affiliated with the photo, XQUERY will simply find the location of the images that have that person in them.
figure1-1 figure1-2
figure 1.1 figure 1.2

PEXML GUI:
In developing the interface, we wanted to build a system which will enhance the user’s experience and attempt to not limit the presentation space by one view, but rather with multiple views.

The GUI displays to the user the results of their query. There are three key components to the interface. The user uses keywords to query and is able to make queries based on:

  1. Event
  2. People
  3. Location
  4. As well, can use XQUERY syntax

pexmlGUI
The sidebar on the right of the interface is a crucial part of the interface and provides the user with the ability to see the Event structures with the corresponding image. This graphical tree structure highlights the strength of PEXML and its ability to organize images based on events.

Each folder represents an event, and its corresponding leaf nodes represent the corresponding image file(s). Furthermore, the tree structure is a graphical representation of our XML schema structure, and shows its inherent nests design where events are nested within events. Events are ordered by time. The root node represents the event's beginning time interval and leaf nodes are the event's ending time interval, so hence when we traverse through the nodes we are moving forward in time, representing a movement in time, where the end is the most recent event. Root nodes never occurred before the later nodes.

When the user makes a query, multiple presentations of the results are presented to the user. First, the image results panel on the left retrieves the images and second, the location of each image in the local URI is displayed in the Output panel on the top right. While the Node Structure on the right side panel provides the user the ability to explore and search events that might not have been presented to them using other query methods. Also, the user can revisit each node as many times as they want.

XML Manager
This allows anyone who uses the system to change the Event.xml file. Currently, the user is able to import an XML file, modify an existing XML file and save the changes to the file and/or commit the changes to the DBXML, or create a new event to the existing Event.xml.
xmlManager

GUI Conclusion: One of our design goals was to present each node as an event where users can post and search images based on events with the hope to provide a more interactive environment where users interact with the data and can share images through events. Furthermore, our second design goal is to search for images using a more natural way that makes more sense for people moving beyond alpha-numeric. Finally, we designed an interface which encourages user exploration and allows them to gain more insight on the data.