myGrid Strawman =============== Chris Greenhalgh 20 December 2002 Work in progress...!! Experimenting with * possible port types * RDF-based metadata * Browser interfaces for myGrid (http://www.mygrid.org.uk). To run... ========= You need HP Labs JENA RDF library; I'm using 1.6.0 at the moment. Set up the classpath for JENA. Change to the directory containing strawman, repository and annotation directories. Compile the Java files javac strawman\browser\CollectionSubtree.java Run the test application with: java strawman.browser.CollectionSubtree repository annotation Explore... ========== Source: strawman/datatypes - data types :-) strawman/ontologies - property & resource constants strawman/porttypes - proposed/in progress porttypes strawman/repository - metadata and data repositories strawman/brower - graphical browser A few comments... ================= Initial port types (strawman.porttypes) for: -------------------------------------------- * Data - get value, cf LSID * MetaData - simple queries, started like LSID, but is growing as I explore different kinds of queries * MutableMetaData - add/remove metadata * Collection - at the moment just a list of things, but has a place holder for dynamic subset creation c.f. views, or BQS queries. Waiting on having some interesting metadata to use to make views. * Repository - add a new data item. * Authority - version of LSID resolution authority; not fully plumbed in at present. Initial services (strawman.repository) (all running in process): ---------------------------------------------------------------- * SimpleMetaDataService - for first and third party metadata. Implements MetaData and MutableMetaData. * SimpleRepository (extends SimpleMetaDataService) - adds file store based item storage to metadata, to add implementation for Collection and Repository, and for its items Data and MetaData. The browser (strawman.browser) ------------------------------ This is based on a tree view (TreeView). Subtrees of this are created by various helpers: * ThingSubtree - creates a node for a named thing, and creates port-type-specific subtrees for its supported interfaces. * DataSubtree - supports retrieval of value from the Data port, passed to a window based on a HtmlPane (see below). * MetaDataSubtree - supports the standard LSID queries on the item's own metadata interface, displayed on a window based on a HtmlPane. * CollectionSubtree - currently supports listing of contents on request, generating a ThingSubtree (and so on) for each. * RepositorySubtree - offers a file chooser and then a very simple (placeholder) window to specify initial metadata which is then added via the Repository port type. The HtmlPane is a demo placeholder which shows how annotations etc can be added to displayed output in (more or less) the manner of COHSE. This version looks for LSID URIs and adds links to them which trigger a (contextual) TextPopupMenu... A TextPopupMenu is available (a) by right clicking Things in the browser tree or (b) clicking the inserted links (currently against LSIDs only) in any HtmlPane. At present this offers links either (a) an AddCommentWindow for that thing - to add a third party annotation as a rdfs:comment or (b) a ViewAnnotationWindow, which uses a HtmlPane to display all known simple statement involving that URI. The ViewAnnotationWindow (and the AddCommentWindow) use the AnnotationManager - which also has a status window - to find known (currently hard-coded) third-party metadata services that they can use. Next steps/observations... * The HtmlPane is a place holder for more general dynamic text monitoring, markup, annotation, etc. * The TextPopupMenu (or equivalent) should also give access to actual interface functionality for the item (if it is resolvable, e.g. an LSID); at the moment you can only talk *about* the item, no *to* it. * We will definitely need more complex metadata; I've only use simple triples so far with no intermediate nodes. The APIs and queries will need extending accordingly. * Doesn't have any support for loading ontology stuff or any sort of reasoning at the moment. The point of this is rapid exploration, minimal overhead; at augmented thought experiment. The route to 'production' or general myGrid code is undefined (and may be 'learn from...'). Cheers, Chris. cmg@cs.nott.ac.uk EOF