Workbench Object Linking

From Diversity Workbench
Jump to: navigation, search

(Background information: Older versions of DiversityWorkbench planned to use numeric Signature IDs to identify a database model and its content. Linking was envisaged as storing a combination of database signature (composed from combining a model signature and content signature into a single 32 bit value) and an object ID. This method was, however, never fully implemented in the Access prototype versions, because all prototype software had a fixed number of components and known model versions.)

We now plan to express relations between objects from different workbench components through URIs. These “links fields” may contain either any URI pointing to any resource on the web, or URIs that refer to objects from DiversityWorkbench components. If an application has direct access to a component, it may be desirable to be able to transform the URI links into knowledge about a record in one of the component databases.

Workbench objects are typically published through web applications (e.g. servlets). A single object may be reachable from different URLs. Examples: http://www.x.net/servlet_version1/12345, http://www.x.net/servlet_version2/12345, http://x.net/servlet_version1/12345. It is possible that the part after the ID is irrelevant (e.g. quality parameters used by DiversityResources) or relevant (e.g. http://x.net/servlet/12345/taxa and http://x.net/servlet/12345/specimen may be different objects).

Use case: A given URI is tested, whether it refers to objects from a set of known Workbench components (e.g. 2 DiversityCollection specimen databases, three DiversityReferences databases). For this purpose, each component contains a database table:

WorkbenchUriMappingPattern, with multiple patterns containing the value ID-field, and the fields:

  • URL_Pattern
    • A pattern must contain a placeholder for the Object ID which is {ID} (not {id}, etc.).
    • A pattern may optionally include the following wildcards:
      • {.} for any number of characters (letters, digits, or punctuation)
      • {*} for any number of letters, digits, the hyphen, but no punctuation (.:,!?=). To be used to match partial IPv4addresses e.g.:
        http://{*}.diversityworkbench.net/Resource/{id} or colon-separated partial IPv6address e.g.:
        http://{*}:diversityworkbench:net/Resource/{id}
  • IDField expressed as single string in the syntax tablename-period-fieldname. Example: “ReferenceTitle.RefID”
  • Preferred Marks a URL-pattern used to create a valid URL pointing to a specific object in the database. Among multiple possible concurrently active or historical URL patterns only one pattern should be set to Preferred=true. If multiple patterns are Preferred=true, a method may select any at random. If true, the URL pattern may not contain any wildcards.

Multiple URLs may have been used for a given object (either concurrently active, or historical URLs previously used). Historical URLs should be maintained to avoid breaking existing links.

(Note: the kind of component, e.g. a references, specimen, literature application) may be retrieved from {WorkbenchInterfaceDescription[@Type=“model”]/@Title})