5 Infrastructure

This section presents the XML structure for Infrastructure common elements, messages and objects in a tabular format for readers less versed in parsing formal XML schema definitions.

The Char(acteristics) column for all of the tables in this section use the following codes:

Code Characteristic
M Mandatory element or attribute
O Optional element or attribute
C Conditional element or attribute
MR Mandatory and repeatable element
OR Optional and repeatable element
CR Conditional and repeatable element

Mandatory elements and attributes MUST be provided in the Infrastructure messages in which they appear. Infrastructure data objects (SIF_ZoneStatus, SIF_AgentACL) can be subject to SIF's request/response and event models; when impacted by these models (in a SIF_Event or in a SIF_Response), these objects follow the same conventions as listed in Data Model.

5.1 Common Elements

5.1.1 SIF_Message

The SIF_Message element is the root element of all SIF messages.

SIF_Message
Figure 5.1.1-1: SIF_Message SIF_Message xmlns Version SIF_Ack SIF_Event SIF_Provide SIF_Provision SIF_Register SIF_Request SIF_Response SIF_Subscribe SIF_SystemControl SIF_Unprovide SIF_Unregister SIF_Unsubscribe
 Element/@AttributeCharDescriptionType
 SIF_Message 

Contains one of the SIF message types.

 
choice of:

SIF_Ack
SIF_Event
SIF_Provide
SIF_Provision
SIF_Register
SIF_Request
SIF_Response
SIF_Subscribe
SIF_SystemControl
SIF_Unprovide
SIF_Unregister
SIF_Unsubscribe
@xmlnsC

The xmlns attribute specifies the XML namespace for SIF messages. For this version of the specification, the value of this attribute MUST be http://www.sifinfo.org/infrastructure/2.x. This XML namespace value will remain the same until the next major release of SIF (3.0).

Note that one SIF_Message may be contained within another when a ZIS delivers a Pull-Mode Agent's next message in a SIF_Ack response to a SIF_GetMessage from the Pull-Mode Agent. If the default namespace specified for the child SIF_Message is the same as the default namespace of the parent SIF_Message, the xmlns attribute for the child message MAY be omitted.

 
xs:anyURI
@VersionM

The version of the SIF Implementation Specification that defines this message's XML structure. For this version of the specification, the value of this attribute is 2.0. This attribute can be used by ZIS and agent implementations to choose schema files to validate the message's XML.

 
VersionType
Table 5.1.1-1: SIF_Message
Example 5.1.1-1: SIF_Message

5.1.2 SIF_Header

SIF_Header is a common message header for all SIF messages.

SIF_Header
Figure 5.1.2-1: SIF_Header SIF_Header SIF_MsgId SIF_Timestamp SIF_Security SIF_SecureChannel SIF_AuthenticationLevel SIF_EncryptionLevel SIF_SourceId SIF_DestinationId SIF_Contexts
 Element/@AttributeCharDescriptionType
 SIF_HeaderM

Header information associated with a message.

 
 
 SIF_MsgIdM

SIF_MsgId is a globally unique message identifier from the Agent or ZIS that sends out the message.

 
MsgIdType
 SIF_TimestampM

Timestamp of when the message was sent.

 
xs:dateTime
 SIF_SecurityO

This element allows an originating agent to specify security requirements that the ZIS must ensure upon delivery of the message to recipient agents. SIF_Security is only examined and processed by a ZIS on SIF_Request, SIF_Response and SIF_Event messages. In this version of the specification, SIF_Security is ignored on all other messages; its use on other messages is reserved for future versions of this specification.

 
 
 SIF_Security/SIF_SecureChannel
     
M

The originating agent uses this element to specify security requirements for the channel between the ZIS and any recipient agents at delivery time. The ZIS must ensure these requirements are met for this message when delivered to other agents.

 
 
 SIF_Security/SIF_SecureChannel/
     SIF_AuthenticationLevel
M

The minimum level of authentication required by the message originator to be considered a secure channel upon message delivery to other agents.

 
SIF_AuthenticationLevel
 SIF_Security/SIF_SecureChannel/
     SIF_EncryptionLevel
M

The minimum level of encryption required by the message originator to be considered a secure channel upon message delivery to other agents.

 
SIF_EncryptionLevel
 SIF_SourceIdM

The SIF_SourceId is the ID of the originator of the message. Each source needs to have a zone unique case-sensitive identifier.

 
xs:token
 SIF_DestinationIdC

This element represents the ID of the recipient of the message and may be present as follows:

SIF_Response messages MUST have this element set to the SIF_SourceId of the originator of the SIF_Request message. The ZIS will use this information to route the SIF_Response to the requesting agent.

SIF_Request messages MAY have this element set to the ID of a specific agent if the requesting agent wishes to direct the SIF_Request to a specific responder. If present, the ZIS will route the SIF_Request to the agent referenced in the element subject to the access control policies in effect for the zone.

This element SHOULD NOT be used in any other SIF Infrastructure messages. If the element is present, it will be ignored by the ZIS.

 
xs:token
 SIF_ContextsO

Contains each SIF Context that applies to the message. If omitted, the applicable context is SIF_Default. SIF_Context is repeatable for SIF_Events, not repeatable for SIF_Request or SIF_Response.

 
SIF_Contexts
Table 5.1.2-1: SIF_Header
Example 5.1.2-1: SIF_Header
Example 5.1.2-2: SIF_Header

5.1.3 SIF_EncryptionLevel

The minimum level of encryption required by the message originator to be considered a secure channel upon message delivery to other agents.

SIF_EncryptionLevel
Figure 5.1.3-1: SIF_EncryptionLevel SIF_EncryptionLevel
 Element/@AttributeCharDescriptionType
 SIF_EncryptionLevel 

The minimum level of encryption required by the message originator to be considered a secure channel upon message delivery to other agents.

 
values:
0
No encryption required
1
Symmetric key length of at least 40 bits is to be used
2
Symmetric key length of at least 56 bits is to be used
3
Symmetric key length of at least 80 bits is to be used
4
Symmetric key length of at least 128 bits is to be used
Table 5.1.3-1: SIF_EncryptionLevel

5.1.4 SIF_AuthenticationLevel

The minimum level of authentication required by the message originator to be considered a secure channel upon message delivery to other agents.

SIF_AuthenticationLevel
Figure 5.1.4-1: SIF_AuthenticationLevel SIF_AuthenticationLevel
 Element/@AttributeCharDescriptionType
 SIF_AuthenticationLevel 

The minimum level of authentication required by the message originator to be considered a secure channel upon message delivery to other agents.

 
values:
0
No authentication required and a valid certificate does not need to be presented.
1
A valid certificate must be presented.
2
A valid certificate from a trusted certificate authority must be presented.
3
A valid certificate from a trusted certificate authority must be presented and the CN field of the certificate's Subject entry must match the host sending the certificate.
Table 5.1.4-1: SIF_AuthenticationLevel

5.1.5 SIF_Contexts

A list of SIF contexts that applies to a message or operation. Typically where used as an optional element, the omission of this element implies the SIF_Default context applies.

SIF_Contexts
Figure 5.1.5-1: SIF_Contexts SIF_Contexts SIF_Context
 Element/@AttributeCharDescriptionType
 SIF_Contexts 

A list of SIF contexts that applies to a message or operation. Typically where used as an optional element, the omission of this element implies the SIF_Default context applies.

 
List
 SIF_ContextMR SIF_Context
Table 5.1.5-1: SIF_Contexts

5.1.6 SIF_Context

The name of a SIF Context that applies to a message or operation.

SIF_Context
Figure 5.1.6-1: SIF_Context SIF_Context
 Element/@AttributeCharDescriptionType
 SIF_Context 

The name of a SIF Context that applies to a message or operation.

 
xs:token
Table 5.1.6-1: SIF_Context

5.1.7 SIF_Protocol

Contains protocol information for contacting a ZIS or Agent.

SIF_Protocol
Figure 5.1.7-1: SIF_Protocol SIF_Protocol Type Secure SIF_URL SIF_Property SIF_Name SIF_Value
 Element/@AttributeCharDescriptionType
 SIF_ProtocolC

Contains protocol information for contacting a ZIS or Agent.

 
 
@TypeM

The type of protocol to use (HTTPS, HTTP or an implementation-defined protocol).

 
union of:

DefinedProtocolsType
xs:token
@SecureM

Whether the protocol provides a secure channel.

 
values:
Yes
No
 SIF_URLC

This element is required if the protocol is HTTPS or HTTP. It contains the https or http URL for contacting the agent.

 
xs:anyURI
 SIF_PropertyCR

If the protocol isn't HTTPS or HTTP then the SIF_Protocol element may contain zero or more SIF_Property elements. Each property element contains a SIF_Name/SIF_Value pair that describes a protocol setting for proper communication.

 
 
 SIF_Property/SIF_NameM

Property name.

 
xs:token
 SIF_Property/SIF_ValueM

Property value.

 
xs:string
Table 5.1.7-1: SIF_Protocol

5.1.8 SIF_Status

This element is used to signal a successful response.

SIF_Status
Figure 5.1.8-1: SIF_Status SIF_Status SIF_Code SIF_Desc SIF_Data SIF_Message SIF_AgentACL SIF_ZoneStatus
 Element/@AttributeCharDescriptionType
 SIF_Status 

This element is used to signal a successful response.

 
 
 SIF_CodeM InfrastructureStatusCodeType
 SIF_DescO

An optional textual description/equivalent of SIF_Code.

 
xs:string
 SIF_DataO

Optional element to hold data related to a successful operation. This data is currently limited to a SIF_Message returned by the ZIS in response to a Pull-Mode Agent's SIF_GetMessage, SIF_AgentACL returned by the ZIS in response to SIF_Register and SIF_GetAgentACL, and SIF_ZoneStatus returned by the ZIS in response to SIF_GetZoneStatus.

 
choice of:

SIF_Message
SIF_AgentACL
SIF_ZoneStatus
Table 5.1.8-1: SIF_Status

5.1.9 SIF_Error

This element is used to signal an unsuccessful response.

SIF_Error
Figure 5.1.9-1: SIF_Error SIF_Error SIF_Category SIF_Code SIF_Desc SIF_ExtendedDesc
 Element/@AttributeCharDescriptionType
 SIF_Error 

This element is used to signal an unsuccessful response.

 
 
 SIF_CategoryM InfrastructureErrorCategoryType
 SIF_CodeM

See Error Codes.

 
union of:

InfrastructureXMLValidationErrorType
InfrastructureEncryptionErrorType
InfrastructureAuthenticationErrorType
InfrastructureAccessAndPermissionErrorType
InfrastructureRegistrationErrorType
InfrastructureProvisionErrorType
InfrastructureSubscriptionErrorType
InfrastructureRequestAndResponseErrorType
InfrastructureEventReportingAndProcessingErrorType
InfrastructureTransportErrorType
InfrastructureSystemErrorType
InfrastructureGenericMessageHandlingErrorType
xs:token
 SIF_DescM

A simple, easy to understand, description of the error. The primary consumer of this message is the application user. Example: "Unable to open database."

 
xs:string
 SIF_ExtendedDescO

An optional error description that is more complete and technical in nature. It is to be used as a diagnostic message in trouble-shooting procedures. Example: "The 'Students' table is opened in exclusive mode by user 'ADM1' (dbm.cpp, line 300)."

 
xs:string
Table 5.1.9-1: SIF_Error

5.1.10 SIF_Query

SIF's default query mechanism.
SIF_Query
Figure 5.1.10-1: SIF_Query SIF_Query SIF_QueryObject ObjectName SIF_Element SIF_ConditionGroup Type SIF_Conditions Type SIF_Condition SIF_Element SIF_Operator SIF_Value SIF_Example StudentLocator
 Element/@AttributeCharDescriptionType
 SIF_Query SIF's default query mechanism.  
 SIF_QueryObjectM

This is the object that is being queried for.

 
 
@ObjectNameM

The actual name of the object that is being queried for.

 
SIF_RequestObjectNamesType
 SIF_QueryObject/SIF_Element
     
OR

Individual elements/attributes being requested of matching object. See SIF_Element Syntax below. If specified, only the elements/attributes requested are returned in the SIF_Response (with any parent elements/attributes); otherwise, all elements supported by the provider's object are returned.

Note that this is a means to filter or select a subset of elements/attributes from a matching object; specifying elements/attributes here that do not occur in or are not supported in a matching object does not exclude that matching object from being returned. Include any existing parent elements/attributes of the elements/attributes that are requested but not present.

 
xs:normalizedString
 SIF_ConditionGroupC

Either SIF_ConditionGroup or SIF_Example may optionally be specified to present conditions matching objects should satisfy.

SIF_ConditionGroup represents the conditions that the queried object(s) must meet. If conditions are specified, only those objects that meet the conditions are returned; otherwise, all objects of the specified name are returned.

 
 
@TypeM

The Boolean operator for joining conditions (SIF_Conditions elements) within this element. Note that None should be used if there is only one SIF_Conditions element.

 
values:
And
Or
None
 SIF_ConditionGroup/SIF_Conditions
     
MR

This construct allows for nested conditions.

 
 
@TypeM

The boolean operator for joining conditions (SIF_Condition elements) within this element. Note that None should be used if there is only one SIF_Condition element.

 
values:
And
Or
None
 SIF_ConditionGroup/SIF_Conditions/
     SIF_Condition
MR

This element represents an individual condition.

 
 
 SIF_ConditionGroup/SIF_Conditions/
     SIF_Condition/SIF_Element
     
M

This is the element/attribute being queried. See below for syntax.

 
xs:normalizedString
 SIF_ConditionGroup/SIF_Conditions/
     SIF_Condition/SIF_Operator
     
M

The comparison operator for the condition.

 
values:
EQ
Equals
LT
Less Than
GT
Greater Than
LE
Less Than Or Equals
GE
Greater Than Or Equals
NE
Not Equals
 SIF_ConditionGroup/SIF_Conditions/
     SIF_Condition/SIF_Value
M

SIF_Value is the data that is used to compare with the value of the element or attribute.

 
xs:string
 SIF_ExampleC

An example SIF object that serves as a template for matching objects. There is an implied EQ operator for every element/attribute value present and an implied And group of all resulting conditions. Currently this is an experimental feature and limited to use with StudentLocator; wider use may be considered in future versions of this specification.

 
choice of:

StudentLocator
Table 5.1.10-1: SIF_Query

5.1.10.1 SIF_ConditionGroup

The SIF_Query element may have a SIF_ConditionGroup element that may have one or more SIF_Conditions elements. A SIF_Conditions element may contain one or more SIF_Condition elements. Each SIF_Condition element defines a search criterion, which contains the following sub-elements. For example, if you wished to request the LibraryPatronStatus object for all teachers, the SIF_ConditionGroup would be:

Example 5.1.10.1-1

If you wished to request the LibraryPatronStatus object for a specific teacher then the SIF_ConditionGroup would be:

Example 5.1.10.1-2
Example 5.1.10.1-3: SIF_ConditionGroup querying into an object

5.1.10.2 SIF_Element Syntax

To reference individual elements/attributes in query criteria for objects, and in lists of individual elements/attributes to be returned from matching objects, SIF defines a path syntax which is based on a small subset of [XPath], for use in SIF_Element. Elements are specified by name (e.g. Name) and attributes are specified by name, prefixed with @ (e.g. @Type). Namespace prefixes may precede element/attribute names as necessary (e.g. @xml:lang) and reference the current prefix-to-namespace mappings within the XML of the request. To reference child elements or attributes of child elements, a path notation is used where each element/attribute in the path is separated by / (e.g. Name/FirstName, Name/@Type). The object's element is the root element and is not included when referencing child elements (e.g. Name/FirstName, not StudentPersonal/Name/FirstName); no / is required when referencing attributes of the object itself (e.g. @RefId, not StudentPersonal/@RefId).

SIF_Condition/SIF_Element may also contain XPath predicates (e.g. [@Type='04']) to allow for more precise matching, especially with regard to repeatable elements with "key" attributes. The following SIF_Condition would match object withs any FirstName of Cameron:

Example 5.1.10.2-1

Using a predicate allows the requester to specifically query the person's name of record (04) vs. his/her previous, professional, current legal name, etc.

Example 5.1.10.2-2

Predicate expressions supported in SIF are limited to or, and, =, element/attribute names with optional prefixes and accessing nested elements/attributes using /.

5.1.11 SIF_ExtendedQuery

SIF's default query mechanism for SIF_Request, SIF_Query, has several limitations that limit its usefulness when creating reporting applications that process data from a SIF zone. SIF_Query is limited to matching only one object type per query, requiring applications to manually join together results as needed for reporting and general data processing. SIF_ExtendedQuery is designed to allow for joins on object identifiers/RefIds and to allow retrieval of data in a row/column fashion similar to SQL. Each returned column may contain hierarchical XML elements/objects. While envisioned as the primary mechanism for SIF-based ReportManifests, Providers and Responders in a Zone may support SIF_ExtendedQuery in addition to SIF_Query. Support for SIF_ExtendedQuery can be declared in and retrieved from the Zone is various Infrastructure messages and objects.

Note that matching rows are generated solely based on the SIF_From clause, with optional join criteria, optionally limited/filtered by the SIF_Where clause. If a repeatable element is requested as a column in SIF_Select, this does not generate multiple rows for each occurrence of matching elements; all elements are returned in the corresponding column within a single row.

SIF_ExtendedQuery
Figure 5.1.11-1: SIF_ExtendedQuery SIF_ExtendedQuery SIF_DestinationProvider SIF_Select Distinct RowCount SIF_Element Alias ObjectName SIF_From ObjectName SIF_Join Type SIF_JoinOn SIF_LeftElement ObjectName SIF_RightElement ObjectName SIF_Where SIF_ConditionGroup Type SIF_Conditions Type SIF_Condition SIF_Element ObjectName SIF_Operator SIF_Value SIF_OrderBy SIF_Element ObjectName Ordering
 Element/@AttributeCharDescriptionType
 SIF_ExtendedQuery 

SIF's default query mechanism for SIF_Request, SIF_Query, has several limitations that limit its usefulness when creating reporting applications that process data from a SIF zone. SIF_Query is limited to matching only one object type per query, requiring applications to manually join together results as needed for reporting and general data processing. SIF_ExtendedQuery is designed to allow for joins on object identifiers/RefIds and to allow retrieval of data in a row/column fashion similar to SQL. Each returned column may contain hierarchical XML elements/objects. While envisioned as the primary mechanism for SIF-based ReportManifests, Providers and Responders in a Zone may support SIF_ExtendedQuery in addition to SIF_Query. Support for SIF_ExtendedQuery can be declared in and retrieved from the Zone is various Infrastructure messages and objects.

Note that matching rows are generated solely based on the SIF_From clause, with optional join criteria, optionally limited/filtered by the SIF_Where clause. If a repeatable element is requested as a column in SIF_Select, this does not generate multiple rows for each occurrence of matching elements; all elements are returned in the corresponding column within a single row.

 
 
 SIF_DestinationProviderO

If no SIF_DestinationId applies to the request and this element is supplied, the Requester specifies that the extended query be routed to the Provider on record for the given object name. If this element is omitted and no SIF_DestinationId applies to the request, the ZIS routes the request to the Provider on record for the object name in SIF_From.

 
SIF_RequestObjectNamesType
 SIF_SelectM

Identifies which data elements/attribute are to be returned as columns in each matching row.

 
 
@DistinctM

Specifies whether query results should return all rows (false) or just distinct ones (true). Rows are distinct if at least one column differs between them.

 
xs:boolean
@RowCountM

The maximum number of rows to return. If All, return all rows, otherwise return the top rows up to the maximum row count indicated.

 
union of:

xs:positiveInteger

additional values:

All
 SIF_Select/SIF_ElementMR

Indicates the element/attribute to return as a column. Contents can be left empty to return the whole object specified in ObjectName, or * can be designated to return all attributes and immediate child elements of the object specified in ObjectName, or SIF_Element Syntax can be specified, relative to the object specified in ObjectName. Requested attributes are to be returned as the text value of the corresponding attribute, elements as a copy of the XML element itself including attributes if they exist.

 
xs:normalizedString
@AliasO

Optional caption for the column.

 
xs:normalizedString
@ObjectNameM

The name of the object from which to retrieve element/attributes.

 
SIF_RequestObjectNamesType
 SIF_FromM

Join specification for the query if more than one object is being queried. If only one object is being queried, specify it without the SIF_Join clause. This clause generates the matching rows returned, optionally limited/filtered by the SIF_Where clause. Each object referenced in the SIF_Select, SIF_Where and SIF_OrderBy clauses must be included here.

 
 
@ObjectNameM

The name of the object to query.

 
SIF_RequestObjectNamesType
 SIF_From/SIF_JoinOR

Additional objects to query, with join conditions specifying the relationships between objects.

 
 
@TypeM

Type of relational join.

 
values:
Inner
LeftOuter
RightOuter
FullOuter
 SIF_From/SIF_Join/SIF_JoinOn
     
MR

Specifies the conditions for the join.

 
 
 SIF_From/SIF_Join/SIF_JoinOn/
     SIF_LeftElement
M

Specifies the left-side element/attribute on which to constrain the join. Currently only support for keys/RefIds/RefId references is required.

 
xs:normalizedString
@ObjectNameM

Name of the object that contains the element/attribute.

 
SIF_RequestObjectNamesType
 SIF_From/SIF_Join/SIF_JoinOn/
     SIF_RightElement
M

Specifies right left-side element/attribute on which to constrain the join. Currently only support for keys/RefIds/RefId references is required.

 
xs:normalizedString
@ObjectNameM

Name of the object that contains the element/attribute.

 
SIF_RequestObjectNamesType
 SIF_WhereO

Optionally specifies conditions to limit/filter rows resulting from the SIF_From clause.

 
 
 SIF_Where/SIF_ConditionGroup
     
M

Conditions that matching rows must meet.

 
 
@TypeM

The Boolean operator for joining conditions (SIF_Conditions elements) within this element. Note that None should be used if there is only one SIF_Conditions element.

 
values:
And
Or
None
 SIF_Where/SIF_ConditionGroup/
     SIF_Conditions
MR

This construct allows for nested conditions.

 
 
@TypeM

The boolean operator for joining conditions (SIF_Condition elements) within this element. Note that None should be used if there is only one SIF_Condition element.

 
values:
And
Or
None
 SIF_Where/SIF_ConditionGroup/
     SIF_Conditions/SIF_Condition
     
MR

This element represents an individual condition.

 
 
 SIF_Where/SIF_ConditionGroup/
     SIF_Conditions/SIF_Condition/
     SIF_Element
M

This is the element/attribute being queried.

 
xs:normalizedString
@ObjectNameM

The name of the object containing the element/attribute.

 
 
 SIF_Where/SIF_ConditionGroup/
     SIF_Conditions/SIF_Condition/
     SIF_Operator
M

The comparison operator for the condition.

 
values:
EQ
Equals
LT
Less Than
GT
Greater Than
LE
Less Than Or Equals
GE
Greater Than Or Equals
NE
Not Equals
 SIF_Where/SIF_ConditionGroup/
     SIF_Conditions/SIF_Condition/
     SIF_Value
M

SIF_Value is the data that is used to compare with the value of the element or attribute.

 
xs:string
 SIF_OrderByO

An optional list of elements/attributes by which to sort the resulting rows.

 
 
 SIF_OrderBy/SIF_ElementMR

Indicates the element/attribute by which to sort.

 
xs:normalizedString
@ObjectNameM

The name of the object containing the element/attribute.

 
SIF_RequestObjectNamesType
@OrderingM

Whether to order the element/attribute in ascending or descending order.

 
values:
Ascending
Descending
Table 5.1.11-1: SIF_ExtendedQuery
Example 5.1.11-1: Selecting all StudentPersonal objects
Example 5.1.11-2: Selecting all attributes and immediate child elements of StudentPersonal as columns from all StudentPersonal objects
Example 5.1.11-3: Selecting specific attributes and elements from all StudentPersonal objects
<SIF_ExtendedQuery> <SIF_Select Distinct="true" RowCount="All"> <SIF_Element ObjectName="StudentPersonal" /> <SIF_Element ObjectName="StudentSchoolEnrollment" Alias="Student Entry Date">EntryDate</SIF_Element> </SIF_Select> <SIF_From ObjectName="StudentPersonal"> <SIF_Join Type="Inner"> <SIF_JoinOn> <SIF_LeftElement ObjectName="StudentPersonal">@RefId</SIF_LeftElement> <SIF_RightElement ObjectName="StudentSchoolEnrollment">@StudentPersonalRefId</SIF_RightElement> </SIF_JoinOn> </SIF_Join> </SIF_From> <SIF_Where> <SIF_ConditionGroup Type="And"> <SIF_Conditions Type="And"> <SIF_Condition> <SIF_Element ObjectName="StudentSchoolEnrollment">@SchoolInfoRefId</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>A3E90785EFDA330DACB00785EFDA330D</SIF_Value> </SIF_Condition> <SIF_Condition> <SIF_Element ObjectName="StudentSchoolEnrollment">@SchoolYear</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>2007</SIF_Value> </SIF_Condition> <SIF_Condition> <SIF_Element ObjectName="StudentSchoolEnrollment">@MembershipType</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>Home</SIF_Value> </SIF_Condition> </SIF_Conditions> <SIF_Conditions Type="Or"> <SIF_Condition> <SIF_Element ObjectName="StudentSchoolEnrollment">@TimeFrame</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>Current</SIF_Value> </SIF_Condition> <SIF_Condition> <SIF_Element ObjectName="StudentSchoolEnrollment">@TimeFrame</SIF_Element> <SIF_Operator>EQ</SIF_Operator> <SIF_Value>Future</SIF_Value> </SIF_Condition> </SIF_Conditions> </SIF_ConditionGroup> </SIF_Where> <SIF_OrderBy> <SIF_Element ObjectName="StudentPersonal" Ordering="Ascending">Name/LastName</SIF_Element> </SIF_OrderBy> </SIF_ExtendedQuery>
Example 5.1.11-4: Selecting StudentPersonal objects along with each student's EntryDate from StudentSchoolEnrollment for a specific school, school year and other StudentSchoolEnrollment values, sorted by student's last name
Example 5.1.11-5: Selecting a specific StudentPersonal's StudentSchoolEnrollment objects, along with the corresponding school name for each enrollment

5.1.11.1 Mapping SIF_Query to SIF_ExtendedQuery

While there are differences in how matching objects are returned, note that all non-SIF_Example SIF_Query-based requests can be mapped to a corresponding SIF_ExtendedQuery-based request:

1 Place SIF_Query/SIF_QueryObject/@ObjectName in SIF_ExtendedQuery/SIF_From/@ObjectName.
2 If elements/attributes are specified in SIF_Query/SIF_QueryObject/SIF_Element, place them in SIF_ExtendedQuery/SIF_Select/SIF_Element with @ObjectName set to SIF_Query/SIF_QueryObject/@ObjectName. Otherwise in SIF_Select, specify an empty SIF_Element element with @ObjectName set to SIF_Query/SIF_QueryObject/@ObjectName.
3 If SIF_Query/SIF_ConditionGroup exists, place it in SIF_ExtendedQuery/SIF_Where setting @ObjectName to SIF_Query/SIF_QueryObject/@ObjectName in every occurrence of SIF_Element.
4 Set SIF_Select/@Distinct to false and SIF_Select/@RowCount to All.
Table 5.1.11.1-1: Mapping SIF_Query to SIF_ExtendedQuery
Example 5.1.11.1-1: Input SIF_Query
Example 5.1.11.1-2: Corresponding SIF_ExtendedQuery

5.1.12 SIF_ExtendedQueryResults

This element provides a wrapper for data returned in response to a SIF_ExtendedQuery. Used in SIF_Response and SIF_ReportObject.

SIF_ExtendedQueryResults
Figure 5.1.12-1: SIF_ExtendedQueryResults SIF_ExtendedQueryResults SIF_ColumnHeaders SIF_Element ObjectName Alias xsi:type SIF_Rows R C
 Element/@AttributeCharDescriptionType
 SIF_ExtendedQueryResults 

This element provides a wrapper for data returned in response to a SIF_ExtendedQuery. Used in SIF_Response and SIF_ReportObject.

 
 
 SIF_ColumnHeadersM

Provides the element/attribute and caption information for each column supplied in SIF_ExtendedQuery. The order must correspond to the order of the elements as requested in SIF_ExtendedQuery.

 
 
 SIF_ColumnHeaders/SIF_Element
     
MR

The element/attribute specified for the column in SIF_ExtendedQuery.

 
xs:normalizedString
@ObjectNameM

The object in which the element/attribute occurs.

 
SIF_RequestObjectNamesType
@AliasO

The caption for the column, if specified in SIF_ExtendedQuery.

 
xs:normalizedString
@xsi:typeO

Optionally allows type of column value to be explicitly communicated.

 
 
 SIF_RowsM

A list of matching rows resulting from the supplied SIF_ExtendedQuery. Note that the complete list of rows may span multiple SIF_Response messages, per the SIF_MaxBufferSize supplied in SIF_Request. If there are no matching rows, this is an empty list.

 
 
 SIF_Rows/ROR

An individual matching row resulting from the supplied SIF_ExtendedQuery.

 
 
 SIF_Rows/R/CMR

Contains the value of each column specified in SIF_ExtendedQuery/SIF_Select. The order of the columns must correspond to the order of the elements as requested in SIF_ExtendedQuery. Note the number of columns may be expanded from the requested columns if * is indicated one or more times in the SIF_Select clause.

 
ExtendedContentType
Table 5.1.12-1: SIF_ExtendedQueryResults
Example 5.1.12-1: SIF_ExtendedQueryResults

5.2 Messages

5.2.1 SIF_Ack

This message is used as an acknowledgement for infrastructure messages. All infrastructure messages will return a SIF_Ack as a result to indicate if the request was successful or not. A SIF_Ack must contain either a SIF_Status element acknowledging a successful result or a SIF_Error element describing the failure. The SIF_Error element contains a standardized error number as well as a description of the error.

A successful SIF_Ack is typically returned to the caller containing a SIF_Header, SIF_OriginalSourceId, SIF_OriginalMsgId and the SIF_Status element. In situations where additional information needs to be returned to the caller, a SIF_Data element can be added to the SIF_Status element.

In addition, successful SIF_Ack messages may also be sent to the ZIS under two conditions. The first is when a pull-mode agent requests that a message is to be removed from its queue. The second is when an agent which has invoked SMB wishes to end SMB handling. In that case, the agent sends a "Final" SIF_Ack to the ZIS. In each instance the ZIS returns a SIF_Ack in response to the agent's SIF_Ack message.

SIF_Ack
Figure 5.2.1-1: SIF_Ack SIF_Ack SIF_Header SIF_OriginalSourceId SIF_OriginalMsgId SIF_Status SIF_Error
 Element/@AttributeCharDescriptionType
 SIF_AckM

This message is used as an acknowledgement to an infrastructure message.

 
 
 SIF_HeaderM

Header information associated with this message.

 
SIF_Header
 SIF_OriginalSourceIdM

The SIF_SourceId of the infrastructure message for which the SIF_Ack serves as a response.

 
xs:token
 SIF_OriginalMsgIdM

The SIF_MsgId of the infrastructure message for which the SIF_Ack message serves as a response.

 
MsgIdType
 SIF_StatusC

This element is used to signal a successful response.

 
SIF_Status
 SIF_ErrorC

This element is used to signal an unsuccessful response.

 
SIF_Error
Table 5.2.1-1: SIF_Ack
Example 5.2.1-1: SIF_Ack Status Message
Example 5.2.1-2: SIF_Ack Error Message

5.2.2 SIF_Event

SIF_Event is used to deliver event objects as defined in SIF. Events represent the availability of a new data object, changes to, or deletions of data object.

SIF_Event
Figure 5.2.2-1: SIF_Event SIF_Event SIF_Header SIF_ObjectData SIF_EventObject ObjectName Action
 Element/@AttributeCharDescriptionType
 SIF_EventM

SIF_Event is used to deliver event objects as defined in SIF.

 
 
 SIF_HeaderM

Header information associated with this message.

 
SIF_Header
 SIF_ObjectDataM  
 SIF_ObjectData/SIF_EventObject
     
M

Contains the actual object (partial or whole) that is being added, changed or deleted.

 
SIF_EventObjectType
@ObjectNameM

This is the name of the object being added, changed or deleted.

 
SIF_SubscribeObjectNamesType
@ActionM

This is the action associated with the object that is being conveyed by this SIF_Event.

 
values:
Add
Delete
Change
Table 5.2.2-1: SIF_Event
Example 5.2.2-1: SIF_Event Message with StudentPersonal changes

5.2.3 SIF_Provide

The SIF_Provide message is used to attempt registering as the provider of one or more data objects.

SIF_Provide
Figure 5.2.3-1: SIF_Provide SIF_Provide SIF_Header SIF_Object ObjectName SIF_ExtendedQuerySupport SIF_Contexts
 Element/@AttributeCharDescriptionType
 SIF_ProvideM

The SIF_Provide message is used for advertising the provision of data objects.

 
 
 SIF_HeaderM

Header information associated with this message.

 
SIF_Header
 SIF_ObjectMR

This is the object that is being provided.

 
 
@ObjectNameM

The actual name of the object that is being provided.

 
SIF_ProvideObjectNamesType
 SIF_Object/SIF_ExtendedQuerySupport
     
O

Whether or not the Agent supports SIF_ExtendedQuery for this object.

 
xs:boolean
 SIF_Object/SIF_ContextsO

The contexts in which the object is being provided; if omitted, the context is SIF_Default.

 
SIF_Contexts
Table 5.2.3-1: SIF_Provide
Example 5.2.3-1: SIF_Provide

5.2.4 SIF_Provision

Once registered, this message allows an agent to announce to the ZIS the functionality the agent will provide. The ZIS compares the functionality to its access control list and either returns a failure or a success. Upon success, the ZIS performs an atomic update of its provide/subscribe database entries for the agent to match the objects listed in this message and atomically updates other stored settings for the agent. A ZIS must not allow an agent to perform operations that it did not successfully announce. Agents should be aware that if the access control list changes after a successful SIF_Provision, some operations may still be rejected with access control errors.

SIF_Provision
Figure 5.2.4-1: SIF_Provision SIF_Provision SIF_Header SIF_ProvideObjects SIF_Object ObjectName SIF_ExtendedQuerySupport SIF_Contexts SIF_SubscribeObjects SIF_Object ObjectName SIF_Contexts SIF_PublishAddObjects SIF_Object ObjectName SIF_Contexts SIF_PublishChangeObjects SIF_Object ObjectName SIF_Contexts SIF_PublishDeleteObjects SIF_Object ObjectName SIF_Contexts SIF_RequestObjects SIF_Object ObjectName SIF_ExtendedQuerySupport SIF_Contexts SIF_RespondObjects SIF_Object ObjectName SIF_ExtendedQuerySupport SIF_Contexts
 Element/@AttributeCharDescriptionType
 SIF_Provision 

Once registered, this message allows an agent to announce to the ZIS the functionality the agent will provide. The ZIS compares the functionality to its access control list and either returns a failure or a success. Upon success, the ZIS performs an atomic update of its provide/subscribe database entries for the agent to match the objects listed in this message and atomically updates other stored settings for the agent. A ZIS must not allow an agent to perform operations that it did not successfully announce. Agents should be aware that if the access control list changes after a successful SIF_Provision, some operations may still be rejected with access control errors.

 
 
 SIF_HeaderM

Header information associated with this message.

 
SIF_Header
 SIF_ProvideObjectsM

A list of objects an Agent wishes to provide.

 
 
 SIF_ProvideObjects/SIF_Object
     
OR  
@ObjectNameM

The name of each object.

 
SIF_ProvideObjectNamesType
 SIF_ProvideObjects/SIF_Object/
     SIF_ExtendedQuerySupport
O

Whether or not SIF_ExtendedQuery is supported with regard to this object.

 
xs:boolean
 SIF_ProvideObjects/SIF_Object/
     SIF_Contexts
O

Applicable contexts for stated object support. If omitted, the context defaults to SIF_Default.

 
SIF_Contexts
 SIF_SubscribeObjectsM

A list of objects to which an Agent wishes to subscribe.

 
 
 SIF_SubscribeObjects/SIF_Object
     
OR  
@ObjectNameM

The name of each object.

 
SIF_SubscribeObjectNamesType
 SIF_SubscribeObjects/SIF_Object/
     SIF_Contexts
O

Applicable contexts for stated object support. If omitted, the context defaults to SIF_Default.

 
SIF_Contexts
 SIF_PublishAddObjectsM

A list of objects for which an Agent wishes to publish Add events.

 
 
 SIF_PublishAddObjects/SIF_Object
     
OR  
@ObjectNameM

The name of each object.

 
SIF_SubscribeObjectNamesType
 SIF_PublishAddObjects/SIF_Object/
     SIF_Contexts
O

Applicable contexts for stated object support. If omitted, the context defaults to SIF_Default.

 
SIF_Contexts
 SIF_PublishChangeObjectsM

A list of objects for which an Agent wishes to publish Change events.

 
 
 SIF_PublishChangeObjects/
     SIF_Object
OR  
@ObjectNameM

The name of each object.

 
SIF_SubscribeObjectNamesType
 SIF_PublishChangeObjects/
     SIF_Object/SIF_Contexts
O

Applicable contexts for stated object support. If omitted, the context defaults to SIF_Default.

 
SIF_Contexts
 SIF_PublishDeleteObjectsM

A list of objects for which an Agent wishes to publish Delete events.

 
 
 SIF_PublishDeleteObjects/
     SIF_Object
OR  
@ObjectNameM

The name of each object.

 
SIF_SubscribeObjectNamesType
 SIF_PublishDeleteObjects/
     SIF_Object/SIF_Contexts
O

Applicable contexts for stated object support. If omitted, the context defaults to SIF_Default.

 
SIF_Contexts
 SIF_RequestObjectsM

A list of objects an Agent wishes to request.

 
 
 SIF_RequestObjects/SIF_Object
     
OR  
@ObjectNameM

The name of each object.

 
SIF_RequestObjectNamesType
 SIF_RequestObjects/SIF_Object/
     SIF_ExtendedQuerySupport
O

Optionally specify whether or not SIF_ExtendedQuery may be sent in requests for this object.

 
xs:boolean
 SIF_RequestObjects/SIF_Object/
     SIF_Contexts
O

Applicable contexts for stated object support. If omitted, the context defaults to SIF_Default.

 
SIF_Contexts
 SIF_RespondObjectsM

A list of objects for which an Agent wishes to handle requests, whether or not it is the Provider for each object. Note that this list MUST include those objects specified in SIF_ProvideObjects.

 
 
 SIF_RespondObjects/SIF_Object
     
OR  
@ObjectNameM

The name of each object.

 
SIF_RequestObjectNamesType
 SIF_RespondObjects/SIF_Object/
     SIF_ExtendedQuerySupport
O

Whether or not SIF_ExtendedQuery is supported with regard to this object.

 
xs:boolean
 SIF_RespondObjects/SIF_Object/
     SIF_Contexts
O

Applicable contexts for stated object support. If omitted, the context defaults to SIF_Default.

 
SIF_Contexts
Table 5.2.4-1: SIF_Provision