Marcus Endicott - Aug 23, 2014:
1) Are you saying that AIML tree structure is 2D, whereas tree structure within a graph database is 3D?
2) Is it correct then that AIML Graphmaster is in fact a “graph metaphor” or algorithm, rather than a data structure per se?
3) Could AIML be used with a graph database?
4) Has there been any AIML interpreter built on a graph database?
5) Would it even make any sense to use AIML with a graph database, why or why not?
6) What are the fundamental differences and/or similarities between a relational database, such as MySQL, and a graph database?
I’m on vacation and only brought my ipad but I’ll try to provide a skeleton stab at an answer.
1) yes, sort of, see below.
2) I believe so, but haven’t done more than glance at it, again, see below.
3) yes, see below.
4) dunno.
5) sure, but there are many values of “make sense”.
6) wik/google answers this better than me.
It’s important to realize there are layers and abstractions here and it’s easy to start muddling the waters. Roughly for the layman:
There is the data storage layer commonly referred to as ‘the database’’ (MySQL, oracle,neo4j, ect)
—This usually has a data model it presents to the client (rdbm,rdf,network,ect)
— And query languages it supports (nosql,sql,sparcql,prolog,ect)
— And internals to implement the above, ie how it internally stores and manipulates data.
There is the query language as mentioned.
There are data processing algorithms including translation (map reduce, XML -> json ect ).
There is data format, which is how data transits systems. Common data formats would be XML, json, cvs, various binary formats, ect. Note: databases also use data formats in their internals.
There is data representation or how the data is exposed to end consumers (humans,aliens,other computers, ect)
The key here is that most people use all these terms interchangeably so it’s confusing. Furthermore any system the interacts with data likely composes a heterogeneous composition of all of the above. You may have a classic RDBMS providing an implementation of a graph data model through a client library that provides a nosql interface. A web service could use that data store to provide XML data to a web app that displays it in tabular form. And that is a simple use case. . Like I said, it’s fruit all the way down. A simple XML configuration file is technically a database if you squint at it right.
I believe allegro is mostly focused on providing RDF which is a graph database model more focused on triplestore - data entities with the form ‘subject : predicate : object’ which makes it perfect for storing stuff like ‘cats are animals’ or ‘Bob age 35’. Can you see where that fits best into a chat system?
Bottom line: Any data model can be expressed in any data format or accessed via any query language - the question of which to use at any given moment is really one of efficiency, ease and elegance. A particular chat system is likely to use a broad range of data models, formats and query languages to accomplish it’s job.
(Disclaimer:simplified)
PS: AIML would technically fall under a data format specification for a DSL (domain specific language). It is processed per the spec similarly to how various web browsers process and display HTML.
PPS: the ‘fruit all the way down’ is a reference to http://en.m.wikipedia.org/wiki/Turtles_all_the_way_down