OpenMath Content Dictionary: scscp2
Canonical URL:
https://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 7)
Review Date:
Status:
experimental
This CD defines symbols for the description of the management
of mathematical queries.
In particular, it is used by the SCIEnce project [SCIEnce 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"
[SCSCP specification ].
The objects in this CD are somewhat more sophisticated than those in
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.
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:
xml prefix mathml
<OMOBJ xmlns="http://www.openmath.org/OpenMath">
<OMATTR>
<OMATP>
<OMS cd="scscp1" name="call_id"/>
<OMSTR>9882860</OMSTR>
<OMS cd="scscp1" name="option_return_object"/>
<OMSTR/>
</OMATP>
<OMA>
<OMS cd="scscp1" name="procedure_call"/>
<OMA>
<OMS cd="scscp2" name="store_session"/>
<OMI>6177887</OMI>
</OMA>
</OMA>
</OMATTR>
</OMOBJ>
procedure_call
(
store_session
(
6177887
)
)
The server might then reply:
Example:
xml prefix mathml
<OMOBJ xmlns="http://www.openmath.org/OpenMath">
<OMATTR>
<OMATP>
<OMS cd="scscp1" name="call_id"/>
<OMSTR>9882860</OMSTR>
</OMATP>
<OMA>
<OMS cd="scscp1" name="procedure_completed"/>
<OMR href="scscp://somewhere:26133/qjhtkoeurthoedu"/>
</OMA>
</OMATTR>
</OMOBJ>
procedure_completed
(
)
Note that the content of the OMR may vary, e.g. the URI does not
necessarily start with scscp://.
Signatures:
sts
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
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:
xml prefix mathml
<OMOBJ xmlns="http://www.openmath.org/OpenMath">
<OMATTR>
<OMATP>
<OMS cd="scscp1" name="call_id"/>
<OMSTR>9882861</OMSTR>
<OMS cd="scscp1" name="option_return_object"/>
<OMSTR/>
</OMATP>
<OMA>
<OMS cd="scscp1" name="procedure_call"/>
<OMA>
<OMS cd="scscp2" name="retrieve"/>
<OMR href="scscp://somewhere:26133/qjhtkoeurthoedu"/>
</OMA>
</OMA>
</OMATTR>
</OMOBJ>
procedure_call
(
retrieve
(
)
)
The server might then reply:
Example:
xml prefix mathml
<OMOBJ xmlns="http://www.openmath.org/OpenMath">
<OMATTR>
<OMATP>
<OMS cd="scscp1" name="call_id"/>
<OMSTR>9882861</OMSTR>
</OMATP>
<OMA>
<OMS cd="scscp1" name="procedure_completed"/>
<OMI>6177887</OMI>
</OMA>
</OMATTR>
</OMOBJ>
procedure_completed
(
6177887
)
Signatures:
sts
Description:
This indicates the request to remove the object, referred
by the cookie, from the server.
Example:
xml prefix mathml
<OMOBJ xmlns="http://www.openmath.org/OpenMath">
<OMATTR>
<OMATP>
<OMS cd="scscp1" name="call_id"/>
<OMSTR>9882862</OMSTR>
<OMS cd="scscp1" name="option_return_object"/>
<OMSTR/>
</OMATP>
<OMA>
<OMS cd="scscp1" name="procedure_call"/>
<OMA>
<OMS cd="scscp2" name="unbind"/>
<OMR href="scscp://somewhere:26133/qjhtkoeurthoedu"/>
</OMA>
</OMA>
</OMATTR>
</OMOBJ>
procedure_call
(
unbind
(
)
)
The server might then reply:
Example:
xml prefix mathml
<OMOBJ xmlns="http://www.openmath.org/OpenMath">
<OMATTR>
<OMATP>
<OMS cd="scscp1" name="call_id"/>
<OMSTR>9882862</OMSTR>
</OMATP>
<OMA>
<OMS cd="scscp1" name="procedure_completed"/>
</OMA>
</OMATTR>
</OMOBJ>
procedure_completed
(
)
Signatures:
sts
Description:
This symbol is used to find the list of procedures supported by an SCSCP server.
The client could send:
Example:
xml prefix mathml
<OMOBJ xmlns="http://www.openmath.org/OpenMath">
<OMATTR>
<OMATP>
<OMS cd="scscp1" name="call_id"/>
<OMSTR>1324765</OMSTR>
<OMS cd="scscp1" name="option_return_object"/>
<OMSTR/>
</OMATP>
<OMA>
<OMS cd="scscp1" name="procedure_call"/>
<OMA>
<OMS cd="scscp2" name="get_allowed_heads"/>
</OMA>
</OMA>
</OMATTR>
</OMOBJ>
procedure_call
(
get_allowed_heads
(
)
)
and the server might then reply:
Example:
xml prefix mathml
<OMOBJ xmlns="http://www.openmath.org/OpenMath">
<OMATTR>
<OMATP>
<OMS cd="scscp1" name="call_id"/>
<OMSTR>1324765</OMSTR>
</OMATP>
<OMA>
<OMS cd="scscp1" name="procedure_completed"/>
<OMA>
<OMS cd="scscp2" name="symbol_set"/>
<OMS cd="scscp_transient_1" name="GroupIdentificationService"/>
<OMS cd="group1" name="group"/>
<OMA>
<OMS cd="meta" name="CDName"/>
<OMSTR>permut1</OMSTR>
</OMA>
<OMA>
<OMS cd="metagrp" name="CDGroupName"/>
<OMSTR>scscp</OMSTR>
</OMA>
</OMA>
</OMA>
</OMATTR>
</OMOBJ>
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
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:
xml prefix mathml
<OMOBJ xmlns="http://www.openmath.org/OpenMath">
<OMATTR>
<OMATP>
<OMS cd="scscp1" name="call_id"/>
<OMSTR>xy87263</OMSTR>
<OMS cd="scscp1" name="option_return_object"/>
<OMSTR/>
</OMATP>
<OMA>
<OMS cd="scscp1" name="procedure_call"/>
<OMA>
<OMS cd="scscp2" name="is_allowed_head"/>
<OMS cd="arith1" name="plus"/>
</OMA>
</OMA>
</OMATTR>
</OMOBJ>
procedure_call
(
is_allowed_head
(
+
)
)
and the server might then reply:
Example:
xml prefix mathml
<OMOBJ xmlns="http://www.openmath.org/OpenMath">
<OMATTR>
<OMATP>
<OMS cd="scscp1" name="call_id"/>
<OMSTR>xy87263</OMSTR>
</OMATP>
<OMA>
<OMS cd="scscp1" name="procedure_completed"/>
<OMS cd="logic1" name="false"/>
</OMA>
</OMATTR>
</OMOBJ>
procedure_completed
(
F
)
indicating that it does not accept this symbol.
Another, slightly more contrived, example would be for the client to ask:
Example:
xml prefix mathml
<OMOBJ xmlns="http://www.openmath.org/OpenMath">
<OMATTR>
<OMATP>
<OMS cd="scscp1" name="call_id"/>
<OMSTR>xy87263</OMSTR>
<OMS cd="scscp1" name="option_return_object"/>
<OMSTR/>
</OMATP>
<OMA>
<OMS cd="scscp1" name="procedure_call"/>
<OMA>
<OMS cd="scscp2" name="is_allowed_head"/>
<OMS cd="scscp2" name="is_allowed_head"/>
</OMA>
</OMA>
</OMATTR>
</OMOBJ>
procedure_call
(
is_allowed_head
(
is_allowed_head
)
)
and the server to reply:
Example:
xml prefix mathml
<OMOBJ xmlns="http://www.openmath.org/OpenMath">
<OMATTR>
<OMATP>
<OMS cd="scscp1" name="call_id"/>
<OMSTR>xy87263</OMSTR>
</OMATP>
<OMA>
<OMS cd="scscp1" name="procedure_completed"/>
<OMS cd="logic1" name="true"/>
</OMA>
</OMATTR>
</OMOBJ>
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
Description:
This symbol is used to get the contents of a transient CD created by a server.
The client could send:
Example:
xml prefix mathml
<OMOBJ xmlns="http://www.openmath.org/OpenMath">
<OMATTR>
<OMATP>
<OMS cd="scscp1" name="call_id"/>
<OMSTR>1324766</OMSTR>
<OMS cd="scscp1" name="option_return_object"/>
<OMSTR/>
</OMATP>
<OMA>
<OMS cd="scscp1" name="procedure_call"/>
<OMA>
<OMS cd="scscp2" name="get_transient_cd"/>
<OMA>
<OMS cd="meta" name="CDName"/>
<OMSTR>scscp_transient_1</OMSTR>
</OMA>
</OMA>
</OMA>
</OMATTR>
</OMOBJ>
procedure_call
(
get_transient_cd
(
CDName
(
scscp_transient_1
)
)
)
and the server might then reply:
Example:
xml prefix mathml
<OMOBJ xmlns="http://www.openmath.org/OpenMath">
<OMATTR>
<OMATP>
<OMS cd="scscp1" name="call_id"/>
<OMSTR>1324766</OMSTR>
</OMATP>
<OMA>
<OMS cd="scscp1" name="procedure_completed"/>
<OMA>
<OMS cd="meta" name="CD"/>
<OMA>
<OMS cd="meta" name="CDName"/>
<OMSTR>scscp_transient_1</OMSTR>
</OMA>
<OMA>
<OMS cd="meta" name="CDDate"/>
<OMSTR>2007-08-24</OMSTR>
</OMA>
<OMA>
<OMS cd="meta" name="Description"/>
<OMSTR>CD created by the service provider</OMSTR>
</OMA>
<OMA>
<OMS name="CDDefinition" cd="meta"/>
<OMA>
<OMS cd="meta" name="Name"/>
<OMSTR>GroupIdentificationService</OMSTR>
</OMA>
<OMA>
<OMS cd="meta" name="Description"/>
<OMSTR>IdGroup(permgroup by gens)</OMSTR>
</OMA>
</OMA>
</OMA>
</OMA>
</OMATTR>
</OMOBJ>
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
Description:
A symbol for the client to inquire about the signature of a particular function.
The client could send:
Example:
xml prefix mathml
<OMOBJ xmlns="http://www.openmath.org/OpenMath">
<OMATTR>
<OMATP>
<OMS cd="scscp1" name="call_id"/>
<OMSTR>1324767</OMSTR>
<OMS cd="scscp1" name="option_return_object"/>
<OMSTR/>
</OMATP>
<OMA>
<OMS cd="scscp1" name="procedure_call"/>
<OMA>
<OMS cd="scscp2" name="get_signature"/>
<OMS cd="scscp_transient_1" name="GroupIdentificationService"/>
</OMA>
</OMA>
</OMATTR>
</OMOBJ>
procedure_call
(
get_signature
(
GroupIdentificationService
)
)
and the server might then reply with a signature message.
Signatures:
sts
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:
xml prefix mathml
<OMOBJ xmlns="http://www.openmath.org/OpenMath">
<OMATTR>
<OMATP>
<OMS cd="scscp1" name="call_id"/>
<OMSTR>1324769</OMSTR>
<OMS cd="scscp1" name="option_return_object"/>
<OMSTR/>
</OMATP>
<OMA>
<OMS cd="scscp1" name="procedure_call"/>
<OMA>
<OMS cd="scscp2" name="get_service_description"/>
</OMA>
</OMA>
</OMATTR>
</OMOBJ>
procedure_call
(
get_service_description
(
)
)
Signatures:
sts
Description:
The symbol to use for describing the types of arguments of a particular function.
Example:
xml prefix mathml
<OMOBJ xmlns="http://www.openmath.org/OpenMath">
<OMATTR>
<OMATP>
<OMS cd="scscp1" name="call_id"/>
<OMSTR>1324767</OMSTR>
</OMATP>
<OMA>
<OMS cd="scscp1" name="procedure_completed"/>
<OMA>
<OMS cd="scscp2" name="signature"/>
<OMS cd="scscp_transient_1" name="GroupIdentificationService"/>
<OMI>1</OMI>
<OMI>1</OMI>
<OMA>
<OMS cd="list1" name="list"/>
<OMA>
<OMS cd="scscp2" name="symbol_set"/>
<OMS cd="group1" name="group"/>
<OMA>
<OMS cd="meta" name="CDName"/>
<OMSTR>permut1</OMSTR>
</OMA>
</OMA>
</OMA>
</OMA>
</OMA>
</OMATTR>
</OMOBJ>
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:
xml prefix mathml
<OMOBJ xmlns="http://www.openmath.org/OpenMath">
<OMATTR>
<OMATP>
<OMS cd="scscp1" name="call_id"/>
<OMSTR>1324767</OMSTR>
</OMATP>
<OMA>
<OMS cd="scscp1" name="procedure_completed"/>
<OMA>
<OMS cd="scscp2" name="signature"/>
<OMS cd="scscp_transient_1" name="CAS_Service"/>
<OMI>0</OMI>
<OMS cd="nums1" name="infinity"/>
<OMA>
<OMS cd="list1" name="list"/>
<OMA>
<OMS cd="meta" name="CDGroupName"/>
<OMSTR>scscp</OMSTR>
</OMA>
<OMA>
<OMS cd="meta" name="CDName"/>
<OMSTR>scscp_transient_0</OMSTR>
</OMA>
<OMA>
<OMS cd="meta" name="CDName"/>
<OMSTR>scscp_transient_1</OMSTR>
</OMA>
<OMA>
<OMS cd="meta" name="CDName"/>
<OMSTR>arith1</OMSTR>
</OMA>
<OMA>
<OMS cd="meta" name="CDName"/>
<OMSTR>transc1</OMSTR>
</OMA>
</OMA>
</OMA>
</OMA>
</OMATTR>
</OMOBJ>
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
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:
xml prefix mathml
<OMOBJ xmlns="http://www.openmath.org/OpenMath">
<OMATTR>
<OMATP>
<OMS cd="scscp1" name="call_id"/>
<OMSTR>1324769</OMSTR>
</OMATP>
<OMA>
<OMS cd="scscp1" name="procedure_completed"/>
<OMA>
<OMS cd="scscp2" name="service_description"/>
<OMSTR>MyGreatService</OMSTR>
<OMSTR>1.1.0</OMSTR>
<OMSTR>This service does fantastic things!</OMSTR>
</OMA>
</OMA>
</OMATTR>
</OMOBJ>
procedure_completed
(
service_description
(
MyGreatService
,
1.1.0
,
This service does fantastic things!
)
)
Signatures:
sts
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
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:
xml prefix mathml
<OMOBJ xmlns="http://www.openmath.org/OpenMath">
<OMATTR>
<OMATP>
<OMS cd="scscp1" name="call_id"/>
<OMSTR>1324767</OMSTR>
</OMATP>
<OMA>
<OMS cd="scscp1" name="procedure_completed"/>
<OMA>
<OMS cd="scscp2" name="signature"/>
<OMS cd="scscp_transient_1" name="Something"/>
<OMI>0</OMI>
<OMS cd="nums1" name="infinity"/>
<OMS cd="scscp2" name="symbol_set_all"/>
</OMA>
</OMA>
</OMATTR>
</OMOBJ>
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
Description:
Used for errors that arise when the client asks for a transient cd that the server cannot handle.
Example:
xml prefix mathml
<OMOBJ xmlns="http://www.openmath.org/OpenMath">
<OME>
<OMS cd="scscp2" name="no_such_transient_cd"/>
<OMSTR>scscp_transient_7</OMSTR>
</OME>
</OMOBJ>
no_such_transient_cd
scscp_transient_7
Signatures:
sts