OpenMath Content Dictionary: scscp2

Canonical URL:
http://www.win.tue.nl/SCIEnce/cds/scscp2.ocd
CD File:
scscp2.ocd
CD as XML Encoded OpenMath:
scscp2.omcd
Defines:
get_allowed_heads, get_service_description, get_signature, get_transient_cd, is_allowed_head, no_such_transient_cd, retrieve, service_description, signature, store_persistent, store_session, symbol_set, symbol_set_all, unbind
Date:
2009-06-25
Version:
1 (Revision 8)
Review Date:
2017-12-31
Status:
experimental


     This document is distributed in the hope that it will be useful, 
     but WITHOUT ANY WARRANTY; without even the implied warranty of 
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

     The copyright holder grants you permission to redistribute this 
     document freely as a verbatim copy. Furthermore, the copyright
     holder permits you to develop any derived work from this document
     provided that the following conditions are met.
       a) The derived work acknowledges the fact that it is derived from
          this document, and maintains a prominent reference in the 
          work to the original source.
       b) The fact that the derived work is not the original OpenMath 
          document is stated prominently in the derived work.  Moreover if
          both this document and the derived work are Content Dictionaries
          then the derived work must include a different CDName element,
          chosen so that it cannot be confused with any works adopted by
          the OpenMath Society.  In particular, if there is a Content 
          Dictionary Group whose name is, for example, `math' containing
          Content Dictionaries named `math1', `math2' etc., then you should 
          not name a derived Content Dictionary `mathN' where N is an integer.
          However you are free to name it `private_mathN' or some such.  This
          is because the names `mathN' may be used by the OpenMath Society
          for future extensions.
       c) The derived work is distributed under terms that allow the
          compilation of derived works, but keep paragraphs a) and b)
          intact.  The simplest way to do this is to distribute the derived
          work under the OpenMath license, but this is not a requirement.
     If you have questions about this license please contact the OpenMath
     society at http://www.openmath.org.

This CD defines symbols for the description of the management of mathematical queries. In particular, it is used by the SCIEnce project [http://www.symbolic-computation.org/](CIEnce website) in the communication between a web service (i.e. computer algebra system, proof checker, etc) and a client. SCSCP is an abbreviation for "Symbolic Computation Software Composability Protocol" [http://www.symbolic-computation.org/scscp/](SCSCP specification).

The objects in this CD are somewhat more sophisticated than those in [sccp1.html](scscp1), and some SCSCP compliant applications may not support these. In particular, we add support for so-called "transient CDs", allowing a server to refer to symbols from temporary content dictionaries, valid only for the duration of the session. Please refer to the specification for more information on this concept.

The symbols in this CD mainly serve two purposes: working with remote objects ( scscp2.store_session , scscp2.store_persistent , scscp2.retrieve, scscp2.unbind ) and determining the procedures a system supports ( scscp2.get_allowed_heads, scscp2.is_allowed_head, scscp2.get_transient_cd, scscp2.get_signature, scscp2.get_service_description, scscp2.signature, scscp2.service_description ). There are also some special symbols ( scscp2.symbol_set, scscp2.symbol_set_all, scscp2.no_such_transient_cd) This version of the Content Dictionary agrees with version 1.3 of the SCSCP protocol.


store_session

Description:

This indicates the request to store an object on the server side (possibly after computing or simplifying it), returning only a cookie (actually, OM reference) pointing to an object that is usable (using an OMR) in the remainder of the current SCSCP session to get access to the actual object.

      The client could ask:
    
Example:
procedure_call ( store_session ( 6177887 ) )
      The server might then reply:
    
Example:
procedure_completed ( )
      Note that the content of the OMR may vary, e.g. the URI does not necessarily start
      with scscp://.
    
Signatures:
sts


[Next: store_persistent] [Last: no_such_transient_cd] [Top]

store_persistent

Description:

This indicates the request to store an object on the server side (possibly after computing or simplifying it), returning only a cookie (actually, OM reference) pointing to an object that is usable (using OMR) in the foreseeable future, possibly from different sessions, to get access to the actual object.

The server is encouraged to describe the expected lifetime of this object and whether references to this object from different SCSCP sessions are allowed in the response to a scscp2.get_signature request on this symbol. However, at this time we provide no automated or machine-readable mechanism for handling these lifetimes.

Signatures:
sts


[Next: retrieve] [Previous: store_session] [Top]

retrieve

Description:

Using the cookie that was obtained earlier by calling the scscp2.store_session or scscp2.store_persistent procedure or another procedure call, return to the client an OM object representing the object, referred by the cookie.

      The client could ask:
    
Example:
procedure_call ( retrieve ( ) )
      The server might then reply:
    
Example:
procedure_completed ( 6177887 )
Signatures:
sts


[Next: unbind] [Previous: store_persistent] [Top]

unbind

Description:

This indicates the request to remove the object, referred by the cookie, from the server.

Example:
procedure_call ( unbind ( ) )
      The server might then reply:
    
Example:
procedure_completed ( )
Signatures:
sts


[Next: get_allowed_heads] [Previous: retrieve] [Top]

get_allowed_heads

Description:

This symbol is used to find the list of procedures supported by an SCSCP server.

      The client could send:
    
Example:
procedure_call ( get_allowed_heads ( ) )
      and the server might then reply:
    
Example:
procedure_completed ( symbol_set ( GroupIdentificationService , group , CDName ( permut1 ) , CDGroupName ( scscp ) ) )
      indicating that it accepts the symbol GroupIdentificationService from the transient
      CD scscp_transient_1, the symbol group1.group, the entire permut1 CD, and all cds
      from the CD group called scscp.
    
Signatures:
sts


[Next: is_allowed_head] [Previous: unbind] [Top]

is_allowed_head

Description:

This symbol is used to find whether a particular procedure is supported by an SCSCP server. The reply must be either true or false, described in one of the appropriate symbols from the logic1 content dictionary.

      The client could ask:
    
Example:
procedure_call ( is_allowed_head ( + ) )
      and the server might then reply:
    
Example:
procedure_completed ( F )
      indicating that it does not accept this symbol.  Another, slightly more contrived,
      example would be for the client to ask:
    
Example:
procedure_call ( is_allowed_head ( is_allowed_head ) )
      and the server to reply:
    
Example:
procedure_completed ( T )
      In particular, this is the method of choice to find out whether a particular server
      supports storing remote objects using the scscp2.store_session and/or
      scscp2.store_persistent methods.
    
Signatures:
sts


[Next: get_transient_cd] [Previous: get_allowed_heads] [Top]

get_transient_cd

Description:

This symbol is used to get the contents of a transient CD created by a server.

      The client could send:
    
Example:
procedure_call ( get_transient_cd ( CDName ( scscp_transient_1 ) ) )
      and the server might then reply:
    
Example:
procedure_completed ( CD ( CDName ( scscp_transient_1 ) , CDDate ( 2007-08-24 ) , Description ( CD created by the service provider ) , CDDefinition ( Name ( GroupIdentificationService ) , Description ( IdGroup(permgroup by gens) ) ) ) )
Signatures:
sts


[Next: get_signature] [Previous: is_allowed_head] [Top]

get_signature

Description:

A symbol for the client to inquire about the signature of a particular function.

      The client could send:
    
Example:
procedure_call ( get_signature ( GroupIdentificationService ) )
      and the server might then reply with a signature message.
    
Signatures:
sts


[Next: get_service_description] [Previous: get_transient_cd] [Top]

get_service_description

Description:

A symbol for the client to ask for some description of a service. Note that this is a very generic description of the service running on a particular port on a particular machine. More details about for example the available symbols there may be obtained with get_allowed_heads, get_signature or get_transient_cd.

      The client could send:
    
Example:
procedure_call ( get_service_description ( ) )
Signatures:
sts


[Next: signature] [Previous: get_signature] [Top]

signature

Description:

The symbol to use for describing the types of arguments of a particular function.

Example:
procedure_completed ( signature ( GroupIdentificationService , 1 , 1 , symbol_set ( group , CDName ( permut1 ) ) ) )
      This means that this GroupIdentificationService requires at least 1 argument, and at
      most 1 argument, and that the symbol group1.group or anything from the permut1 CD
      may be used to form this argument.
    
Example:
procedure_completed ( signature ( CAS_Service , 0 , , ( CDGroupName ( scscp ) , CDName ( scscp_transient_0 ) , CDName ( scscp_transient_1 ) , CDName ( arith1 ) , CDName ( transc1 ) ) ) )
      indicating that this particular CAS_Service takes any number of arguments, which may
      be formed using anything from the CD group scscp, one of two transient CDs, and the
      arith1 or transc1 CD.
    
Signatures:
sts


[Next: service_description] [Previous: get_service_description] [Top]

service_description

Description:

The symbol for the server to use in a response to scscp2.get_service_description. It takes three OMSTR arguments: Name, Version, and Description.

Example:
procedure_completed ( service_description ( MyGreatService , 1.1.0 , This service does fantastic things! ) )
Signatures:
sts


[Next: symbol_set] [Previous: signature] [Top]

symbol_set

Description:

This symbol is used in the reply to a scscp2.get_allowed_heads call. It should be the head of an OM Application, the contents of the OMA being arbitrarily many OM Symbols (meaning that a particular symbol is supported), OMA's with head meta.CDName (meaning that all symbols of a particular CD are supported) or OMA's with head meta.CDGroupName (meaning that all symbols of all CDs of a particular CD group are supported).

See the example at scscp2.get_allowed_heads.

Signatures:
sts


[Next: symbol_set_all] [Previous: service_description] [Top]

symbol_set_all

Description:

This symbol is used in the reply to a scscp2.get_signature message. It means that this particular service takes any OpenMath object as argument.

      A reply might be:
    
Example:
procedure_completed ( signature ( Something , 0 , , symbol_set_all ) )
      indicating that this service, scscp_transient_1.Something, takes between 0 and
      infinity arguments, each of which can be of any type.
    
Signatures:
sts


[Next: no_such_transient_cd] [Previous: symbol_set] [Top]

no_such_transient_cd

Description:

Used for errors that arise when the client asks for a transient cd that the server cannot handle.

Example:
no_such_transient_cd scscp_transient_7
Signatures:
sts


[First: store_session] [Previous: symbol_set_all] [Top]