Now that I am nearly back on track and looking at the SQL side of this project, I would advise that I will be implementing a query interface to the metadata. I have not received a sufficiently enthusiastic response to the Z39.50 poll, so this will be more in the nature of a simple Web Service. If anyone has a preferred method (like SOAP), leave a note in the forum. I will check there before I go and do my own thing.
There will be two types of queries that can be made:
- A query that takes no arguments that produces a list of all the predicates/terms defined in the database. Note that these will not be described - you will need to refer to appropriate documentation (like the Dublin Core site) for explanations.
- A query to retrieve a list of URIs from the database that match a given query string. This string will be URI encoded in a GET request; the string will then be run as a query on the fulltext index of the objects in the metadata table, with or without the constraint of the predicates/terms. In other words, I can search on dc.creator='Matthew Smith' or just 'Matthew Smith'. The former will only pull out records where I am attributed as the creator, the latter any record that mentions my name at all. This may even pull in partial matches as the unconstrained search is running on the fulltext index of the n-tuples table.
The results of queries will probably be returned as a simple XML file.
From testing that I have already done using my database schema for this project, this should make for a fast site search engine that operates totally independently of Drupal's human interface.
If this doesn't make sense but you are still interested, please leave a note in the forum and I will endeavour to elaborate.