We considered recently the issue of the "key" that would be used to
store/retrieve descriptions from the repositories. The key would
identify the context in which the request was being made (i.e. the
physical client mechanism and/or the software user agent). The exact
nature of the key (or "context key", as I'm beginning to call it)
remains an open question. I thought perhaps it might be useful to see
where the context key would be used in the API, and as we're about to
start the API drafting now, here's a tiny seed IDL. We can build this up
on the wiki. Anyone who is familiar with designing interfaces for
databases/repositories is welcome to contribute some ideas. Just email
this list.
---Rotan.
// A simple seed IDL for the DDR.
// This one just has a Get method; no structured types or any
// other well-formed features we expect of the final API.
module ddrcore
{
// Declarations
typedef string OntologyIdentifier; // Responsibility of the UWA
group
typedef string RepositoryId;
typedef string InformalDescription; // i.e. Needs a human to
interpret
interface Repository;
// Definitions
struct ContextKey {
string agentSignature;
};
exception DDRException {
unsigned short code;
};
const unsigned short UNSPECIFIED_ERROR = 1;
const unsigned short NOT_SUPPORTED_ERROR = 2;
const unsigned short ACCESS_VIOLATION = 3;
const unsigned short SYNTAX_ERROR = 4;
interface MinimalRepository {
readonly attribute string name;
readonly attribute RepositoryId id;
InformalDescription getInformalValue (
in ContextKey contextKey;
in OntologyIdentifier propertyName;
) raises(DDRException);
}
};