The RAPK interface describes a prototype of a 
    Kahn-Wilensky style repository
    service.  RAPK is an acronym for Repository Access Protocol for
    Knowbot Programs.  The Intellectual Property Rights
    Management demo implements an Image Repository service that
    conforms to the RAPK inteface.
Notes
    
    
    -  CNRI is conducting ongoing research into repositories and the
    Repository Access Protocol as part of its work on digitial library
    systems.  For more information see  An
    Architecture for Information in Digital Libraries by W. Arms,
    et al.  The RAPK interface defined below is a prototype used in
    the KOE only; it may bear little resemblance to the current RAP
    definition.
     
-  A good grasp of the terminology defined in the papers
    referenced above is necessary to understand the documentation of
    this interface.
     
-  This interface defines additional undocumented types.  These
    are used in CNRI demonstrations that are not distributed with the
    KOE software.
     
 This interface imports the Mapping interface.
     This interface defines the following non-object types:
    
- String
	
- An alias for ilu.CString
	
- Strings
	
- An alias for SEQUENCE OF String
	
- Handle
	
- A type representing a CNRI
	    Handle, currently an alias for the String type.
	
- Handles
	
- An alias for SEQUENCE OF Handle
	
- CardinalOrNull
	
- An alias for OPTIONAL CARDINAL
	
- Iterator
	
- An alias for CARDINAL
	
- TermsAndConditions
	
- A type representing the terms and conditions of use of a
	    digital object.  Currently an alias for
	    Mapping.StringMap
	
- Metadata
	
- A type representing a digital object's metadata.  Currently an
	    alias for
	    Mapping.StringMap
    
 This interface defines the following exceptions:
    
      - TypeError
      
- A digital object cannot produce the requested
	dissemination type.
	
       
- NotFound
      
- A handle refers to a non-existent digital object.
	
       
- LastDocument
      
- An iterator has reached the last document.
	
       
- BadIterator
      
- An invalid iterator was used.
	
       
- ReadError
      
- An error occurs while reading a dissemination's data.
	
       
- TermsAndConditionsFailure
      
- The rights to a digital object have not been satisfied.
    
 This interface defines the following object types:
    
      - Repository
      
- The object representing a repository.
	
       
- DigitalObject
      
- This object represents the somewhat abstract notion of a
	"digital object".  Digital objects have metadata
	associated with them, and may also have terms and
	conditions
	of use which must be satisfied before they can be legally used.
	A digital object may also have any number of
	"disseminations" which are used to retrieve the typed
	data of a digital object.
	 Note that the terms and conditions must be negotiated for
	  a dissemination before that dissemination can be retrieved.
	  Not all disseminations require terms and conditions
	  negotiation, but all disseminations have an interface for
	  negotiating terms and conditions.
	  Terms and conditions negotiation is currently
	  very simple.
	  To find out what terms you must satisfy, use the
	  GetTermsAndConditions() method, which returns a
	  Mapping object (disguised as a the
	  TermsAndConditions type).  The keys of this object
	  are the terms which must be satisfied or conditions which can
	  be queried.  The values are either values used by clients
	  negotiating the terms and conditions, or are expected to
	  be set by the clients in order to satisfy a condition.  The
	  actual set of terms and conditions keys and the expected
	  values are implementation dependent.
	 
       
- Dissemination
      
- The object representing the typed data of a digital object.
	Clients use the Dissemination, for example, to read
	the JPEG data of a thumbnail image represented in a digital
	object.
	
     
      - GetRepoMetadata () : Metadata
      
- Return the repository's metadata object.
	
       
- Scan () : Handles
      
- Return a list of all handles registered in the
	repository.
	
       
- GetMetadata (hdl : Handle) : Metadata
      
- Return the metadata associated with the digital object
	referenced by the handle hdl.  Raise
	NotFound if there is no digital object
	for the given handle.
	
       
- GetDO (hdl : Handle) : DigitalObject
      
- Return the digital object reference by handle
	hdl.  Raise NotFound if there
	is no digital object for the given handle.
	
       
- GetTermsAndConditions
	(hdl : Handle) : TermsAndConditions
      
- Return the terms and conditions for the digital object
	reference by handle hdl. Raise NotFound
	if there is no digital object for the given
	handle.
	
       
- CreateIterator () : Iterator
      
- Create an iterator over the handles for the digital
	objects registered in the repository.
	
       
- Iterate (token : Iterator) : Handle
      
- Return the next handle in the set of handles iterated over
	via the given token.  Raise
	LastDocument when the iterator has moved past the
	last document in the list.  Raise BadIterator
	when the given token is not a valid iterator.
    
      - GetMetadata () : Metadata
      
- Return the metadata for the digital object.
	
       
- GetTermsAndConditions () : TermsAndConditions
      
- Return the terms and conditions for the digital
	object.
	
       
- GetDissemination
	(dtype : String) : Dissemination
      
- Return a dissemination of the digital object, of the
	type specified by dtype.  The list of
	dissemination types is typically defined in the
	metadata of the digital object.  This method raises
	TypeError for if an invalid dissemination
	type is specified.  It raises
	TermsAndConditions if the terms and
	conditions for use of the dissemination have not been
	satisfied.
    
      - GetTermsAndConditions () : TermsAndConditions
      
- Return the terms and conditions for the digital
	object.
	
       
- Read (Size : CardinalOrNull) : String
      
- Read Size bytes of the dissemination's data.
	Raise ReadError if the read fails.  Raise
	TermsAndConditionsFailure if the terms and
	conditions for use of the dissemination have not been
	satisfied.