This is a conceptional question. I'm not (yet) familiar with the involved technologies, please bear this in mind.
I'm thinking of developing a system that lets users make interactive queries, primarily for fault diagnostics. Users should be provided with the ability to start a "query" by entering some small peace of information. Let's say we're talking about some big online shop.
Service personnel should be able to enter the ID of a delivery. This is the starting piece of information. Either the system is able to recognize the object by itself or the user is able to choose from a hierarchical list of the most commonly queried ones (a clever UI is not the matter here, however). If the system found the object "delivery" by the ID, it is able to provide the user with context information. The user should not only have insight to the attributes of the delivery like shipping date and address, but rather the user should be able to navigate to related objects (in UI terms I could imagine a graph of objects that let's you navigate along the graph edges and "hover" over the object (leaves) of interest to focus it). A related object for this example could be simply the "customer" object. That object in turn would have a relationship to object "country" (country of residence).
Now for the interesting part: the relationships. They should be defined manually, i.e. we're not talking about AI stuff here. Some knowledgeable person defines the relationships of the domain. For the above example these could be:
- delivery-id identifies delivery
- delivery is-delivery-of customer
- customer-id identifies customer
- customer resides-in country
- ...
So we are talking about arbitrary relations: different kind of relationships defined by verbs ("resides-in"), navigability could be directed (again, "resides-in") etc.
I found Gellish, which seems to offer a simple way to model such (well, any!) relations. The question is: is this the right tool?
The result should be a system that provides a "framework" that let's you hook up various parts of the IT infrastructure to it. The systems you attach to the-thing-to-be-built provide their information themselves: the system-to-be-built is not actively querying, but rather let's the job be done by the "slaves" hooked up to it. The-thing-to-be-built knows which systems it can ask to do some queries because the systems hooked up specify what relationships they know, what information they provide. So the-thing-to-be-built merely knows by the meta information defined in an ontology(?) which "information provider" to ask.
To stay with the example mentioned above: Let's say that the software used to track packets in delivery is able to provide information about lost/broken packets. If a user queries the system for a delivery (by its ID), the-thing-to-be-built shows him the closest related objects. For the task of finding some failure the query could be restricted to show only relations that are of importance (e.g. only show the leaves in the query graph that have a relationship is-of-importance-level to highly-important).
I'm aware that the practical use of such a system is probably zero unless there are enough information providers (probably all major systems need to be hooked up for such a system to be of value): this whole thing is about the concept.
Now for the questions... No, I won't break this up until I have a question that is specific enough (and I'm able to phrase it in an understandable way without all the context cruft of above).
Are there any existing systems similar to this? "This" being a flexible, information source independent interactive querying system possibly driven by an ontology.
Is a simple ontology database the right tool to model something like this? I want to have a flexible, easy to extend system (modelling relationships via association tables in an RDBMS is not an option!).
What tools/frameworks/concepts could be of help to build a system like this (not UI related)?
If I use an ontology database like Gellish: are there any tools that could help me to hook up a DBMS as a back-end for at least certain relationships (e.g. list of millions of deliveries) in order to speed up queries?