DOTA : Decision Oriented Ticket Agent

Author:  Joseph Ruvel

 
Contents
Domain
Illustration
Methods
Conclusions
 
Domain

 The music business is vastly becoming one of the biggest industries in our society today.  A driving force of this industry is live concerts.  This domain is an internet ticket agent called DOTA who will interact with the user to either find a specific concert they are looking for or to provide the user with different concerts they might be interested in.  The agent will use an extensive knowledge base that will enable it to cross reference different musical artists and genres. 

 While DOTA is a fully functioning search agent , where DOTA really shines is when it is used to help the user find a concert using some information the user provides.  DOTA uses this information to search through its database and find concerts that match what the user wants.  But it does not stop there.  DOTA allows extended intereaction, where it takes responses from the user as starting points to more results.  It tries to find even more concerts that the user might enjoy.



Illustration

Below are some searching illustrations of what DOTA can do.  

|-?  where(live).
live will be playing at convention_hall on dec_30_1999 

| ?- allconcerts(nj).
mathew_sweet will be playing at tradewinds on dec_18_1999
live will be playing at convention_hall on dec_30_1999
cher will be playing at continental_arena on feb_24_2000
harry_conik_jr will be playing at state_theater on jan_11_2000
sebastian_bach will be playing at birch_hill on dec_18_1999
anthrax will be playing at birch_hill on jan_21_2000
elliot_smith will be playing at maxwells on dec_30_1999
yo_la_tengo will be playing at maxwells on dec_31_1999   

| ?- date(cher).
cher is playing on: feb_24_2000 which is within more_then_two_months 

| ?- location(irving_plaza).
irving_plaza is in: ny      

Below are some illustrations of when DOTA is used to help choose a concert:

| ?- choose_concert(ny,alternative,twomonths). 
Maybe I can show you even more concerts that you might enjoy. If
you particularly like any of the concerts i presented to you below - type
likes(concert-performer).  and i will look if there are any other concerts
that are found in another genre that you will like and also fit your
prefrences.

 Here are the concerts that match your preferences:

fat_boy_slim will be playing at hammerstein_ballroom on dec_17_1999
power_man5000 will be playing at roseland on feb_2_2000 

| ?- likes(pretenders).
This is a genre you might also be interested in: alternative

I will now check to see if anymore concerts match your prefrences.
If i find more concerts they will be presented below

fat_boy_slim will be playing at hammerstein_ballroom on dec_17_1999
power_man5000 will be playing at roseland on feb_2_2000    



Methodds

 At the base of DOTA you have both constraint satisfaction and set interaction.  I tried setting up the KB 
to best suit these methods.   You can see in the above illustrations that DOTA will help you find some concerts you might be interested in when given certain constraints.  This worked by taking in the constraits the user gives and by matching them to the KB base that we have.  The difficulty i found in this was that the predicates in the KB need to very closely match the constraits that the user gives.

Another interesting method that was used was when DOTA tries to give the user more choices that the user might not have thought about.  This revolves around the border predicate and the likes(X) relation:

likes(X):- border(X,G) ,
write('This is a genre you might also be interested in: ') , write(G) , nl,nl,
write('I will now check to see if anymore concerts match your prefrences.
If i find more concerts they will be presented below'), nl,nl,
concert_place(X,V) , location(V,S) , concert_performer(Y,G) ,
concert_place(Y,T) , location(T,S) , tf(X,R) , tf(Y,R) , where(Y).   

This enables DOTA to look at other genres of music when giving its choices.


Conclusions

 I very much enjoyed on working on this project and definitly came across some pitfalls on the way.  I found that to set up the KB base for this project, ALOT of time and effort needs to be given to it.  Besides the task of entering all the information in, the border relationship of different genres and performers needs to be done.  

Another pitfall I incountered was the presents of cycles.  I found myself stuck in many loops because of the intereaction between the constraints and the KB.  I was not able to provide the user with the possibility of looking at more then one state at a time because of this.

All in all i feel that DOTA does do something worthwhile and interesting.  It provides an easy way of finding out what concerts are playing and for finding concerts one might not even see if looking on their own.