Please note that this is a demonstration of the principles of Query-by-Browsing. In particular, note that selecting "Open..." or "Save" from the QbB File menu is liable to crash the machine!!
Apart from this the demo is reasonably sound albeit basic.
Query-by-Browsing (QbB) is a novel database interface designed to explore issues of human interaction with intelligent systems. Standard "Query-by-Example" is not really by example at all. The user has to construct a template of the query. In contrast QbB really is "by example". The user selects records of interest from a list of records and machine learning algorithms generate a query which matches the records selected. This query is used to extend the selection and is reflected back to the user either as a textual query (e.g. SQL) or as a QBE style query. The challenges from a research perspective include the choice of algorithms (machine learning, traditional AI, genetic algorithms, neural networks) and handling the interaction. There are typically many queries which explain a given set of selected records. The algorithm must choose one which seems sensible to the user. However good the algorithm, it will not guess right every time and so the deign of the system must allow the user to interact with the intelligent agent in a graceful manner.
The underlying algorithm in this demo version of Query-by-Browsing is a variant of Quinlan's ID3 which allows cross-attribute conditions (normally the primitive conditions only allow atomic comparisons such as 'balance<0', but the QbB demo can also find conditions such as 'balance<credit_limit'). Other algorithms could be used in place of ID3, in particular genetic algorithms and simulated annealing would bothe be suitable.
The data is held in a file called DATABASE and is described in SCHEMA. The format of each is pretty obvious, so it is easy to extend or modify them.
However, you cannot use 'Open' from the file menu to select a different database, the only way to work on different data is to change file names, or have different folders. Also the DATABASE and SCHEMA file need to be in the same folder as the QbB application, so if you have different folder for different data you'll need to have copies of "QbB demo".
Simply double click on the "QbB demo" icon. A window will appear with a listing of the data from DATABASE on the right hand side and a blank area on the top left. The blank area is the query area, and is wher QbB puts its generated queries. Under the query area are various buttons. These are to tell QbB when to try to infer a query and to give feedback to QbB if the query is not as required.
Start by selecting some records from the listing area that interest you and marking those that don't. To mark a record as interesting, click in the thin blank column on the left of the listing area and a tick () will appear. If you click again it will be marked as not interesting (with a cross ) and you can toggle back and forth between these. The Select menu allows you to tick everything, clear the column etc.
Ideally, QbB would examine your selection incrementaly and say when it was reasonably confident of a fitting query. However, in this demo you have to explicitly ask it by clicking the learn button. It will then infer a query which will be displayed in the query area (query is formatted as a decision tree, in a prduction version this would be SQL or QBE format). Similtaneously matching records will be highlighted in the listing area. Use both togeher to decide if the query is acceptable.
If the query is right, click the yes button and the listing area will strip out unmatched records leaving you with the result of your query. If the query is right but too general click the too many button and all unmatching records will be marked with a cross. If the query is too specific click too few and all the matching records will be ticked. You can then go on to mark more records with ticks or crosses, ask QbB to lean again and continue to move towards an acceptable query in an iterative process.
The no button does nothing at present, but with alternative learning algorithms (e.g. genetic, simulated anealing) could make the current query act as a repellor.
Again, do not try to Save the results of your work - this is only a demo!
README
- this file QbB demo
- actual application, double click to start SCHEMA
- scheme file describes data in DATABASE file DATABASE
- the data