Repository Types

Sakaibrary Types for the Repository OSID

OKI OSID Types are denoted in the following way:

authority / domain / keyword

An example of an OKI OSID Type is: mit.edu / search / title

The authority is "mit.edu", the domain is "search" and the keyword is "title". This is a Title Search Type defined by MIT. All Type definitions are Out-of-Band Agreements used to specify the abstractly defined OSIDs.

The authority with which we are creating new Types is sakaibrary. The mit.edu Types already exist.

Repository Type

sakaibrary / repository / metasearch
This Type is used for Repositories that contain scholarly resources derived from metasearch engines.

Search Type

sakaibrary / search / asynchMetasearch
This Type is used to conduct a complex, asynchronous search of a metasearch engine.

This Type defines that search criteria must be a java.lang.String in CQL Format limited to the fields: keyword, title, author, subject, year and the relations: { = , and }.

Examples are:

  • (keyword = clara+clairvoyant) and (keyword = lyrics)
  • (((((keyword = clara+clairvoyant) and (keyword = lyrics)) and (title = open+road)) and (author = donovan)) and (subject = rock+and+roll+music)) and (year = 1970)
  • ((((title = why+do+chimpanzees+hunt+and+share+meat) and (author = mitani)) and (author = watts)) and (subject = behavior)) and (subject = mating)

Classes from the org.sakaibrary.common.search.impl package can be used to effectively parse user input and create proper CQL according to the above rules.

This Type defines search properties must be of the Type sakaibrary / properties / asynchMetasearch.

Properties Types

sakaibrary / properties / asynchMetasearch
This Type is used to assign search properties to an asynchronous search of a metasearch engine. This Type defines the following keys:

  • required properties are in red and starred
  • * guid - A globally unique identifier. This is an alpha-numeric java.lang.String that uniquely identifies the specific user's search session.
  • * baseUrl - A java.lang.String base URL for the SROI's metasearch engine.
  • * username - A java.lang.String username used to login to the SROI's metasearch engine.
  • * password - A java.lang.String password used to login to the SROI's metasearch engine.
  • sortBy - A java.lang.String with one of the following values:
    • 'rank' - results are returned sorted by the metasearch engine's internal ranking algorithm.
    • 'title' - results are returned sorted by title in ascending order (A-Z).
    • 'author' - results are returned sorted by author's last name in ascending order (A-Z).
    • 'year' - results are returned sorted by year in descending order (newer to older).
    • 'database' - results are returned sorted by database in metasearch engine order.
    • if undefined, sortBy defaults to 'rank'.
  • pageSize - A java.lang.Integer indicating how many records to display per page. If undefined, pageSize defaults to 10.
  • startRecord - A java.lang.Integer indicating which record to begin displaying results at. Records start at 1 and not 0. If undefined, startRecord defaults to 1 (the first record).
  • databaseIds - A java.util.List of identifiers used to identify the databases to be searched by the metasearch engine. In Sakai 2.3, this field is not used.

sakaibrary / properties / metasearchStatus
This Type is used to retrieve status information regarding an initiated asynchronous search. The Repository's getPropertiesByType() method can be used to retrieve search status information from the Repository. The org.osid.shared.Properties object of Type sakaibrary / properties / metasearchStatus returned has a unique key-value structure. Below is a table describing the structure of the Properties object:

key

value

delayHint

A java.lang.Integer representing the number of milliseconds the SROI recommends the Consumer wait before calling nextAsset() again. This number is only a suggestion and does not guarantee an Asset will be retrieved if the Consumer waits the indicated number of milliseconds.

databaseNames

a java.util.ArrayList containing the <databaseName> (java.lang.String) of each database being searched.

status

A java.lang.String with status notification (searching, fetching, ready, error, timeout) for the entire search set.

statusMessage

A java.lang.String with status details for the entire search set.

numRecordsFound

A java.lang.Integer representing how many total records have been found for the entire search set.

numRecordsFetched

A java.lang.Integer representing how many records have been fetched for the entire search set.

numRecordsMerged

A java.lang.Integer representing how many records have been merged for the entire search set.

<databaseName> - the name of a database being searched (returned by databaseNames)

A java.util.Map containing all of the above fields except for databaseNames, delayHint and numRecordsMerged. These fields provide data about the specific database (with <databaseName>) being searched as opposed to data pertaining to the entire search set.

Asset, RecordStructure and PartStructure Types

Following is a depiction of the Sakaibrary Asset, RecordStructure and PartStructure Types.

  • Asset Type : sakaibrary / asset / citation
    • RecordStructure Type : sakaibrary / recordStructure / citation
      • PartStructure Type : mit.edu / partStructure / creator
      • PartStructure Type : mit.edu / partStructure / date
      • PartStructure Type : sakaibrary / partStructure / dateRetrieved
      • PartStructure Type : sakaibrary / partStructure / doi
      • PartStructure Type : sakaibrary / partStructure / edition
      • PartStructure Type : sakaibrary / partStructure / endPage
      • PartStructure Type : sakaibrary / partStructure / inLineCitation
      • PartStructure Type : sakaibrary / partStructure / isnIdentifier
      • PartStructure Type : sakaibrary / partStructure / issue
      • PartStructure Type : mit.edu / partStructure / language
      • PartStructure Type : sakaibrary / partStructure / locIdentifier
      • PartStructure Type : sakaibrary / partStructure / note
      • PartStructure Type : sakaibrary / partStructure / openUrl
      • PartStructure Type : sakaibrary / partStructure / pages
      • PartStructure Type : sakaibrary / partStructure / publicationLocation
      • PartStructure Type : mit.edu / partStructure / publisher
      • PartStructure Type : mit.edu / partStructure / rights
      • PartStructure Type : sakaibrary / partStructure / sourceTitle
      • PartStructure Type : sakaibrary / partStructure / startPage
      • PartStructure Type : mit.edu / partStructure / subject
      • PartStructure Type : mit.edu / partStructure / type
      • PartStructure Type : mit.edu / partStructure / url
      • PartStructure Type : sakaibrary / partStructure / urlFormat
      • PartStructure Type : sakaibrary / partStructure / urlLabel
      • PartStructure Type : sakaibrary / partStructure / volume
      • PartStructure Type : sakaibrary / partStructure / year

For more detailed information about the Asset Type, see the attached Out-of-Band document: sakaibraryAssetTypes.doc

For more detailed information about the RecordStructure Type, see the attached Out-of-Band document: sakaibraryRecordStructureTypes.doc

For more detailed information about the PartStructure Types, see the attached Out-of-Band document: sakaibraryPartStructureTypes.doc