OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

search-ws message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: New draft of SRU schemas


I have spent some time looking carefully at the SRU schema and corrected a number of errors.  I haven't quite finished but as I'm going to be away for awhile I'm posting what I have so far, and I think it's fairly close. 
 
The echoedRequestDefinition needed alot of work, and I think it's ok now.
 
(Note: In case you are comparing this with the previous version, I have changed "ComplexType" to "Definition" globally for element and type names. I have been doing this for all my schemas - MODS, etc.)
 
Thsi calls out the facetedResults, searchResultAnalysis, xcql and diagnostic schemas from the searchRetrieveResponseDefinition.   We need to talk about this.
 
The SRU and three supporting schemas are attached.
 
--Ray
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
 xmlns:xs="http://www.w3.org/2001/XMLSchema"; 
 elementFormDefault="qualified"
  attributeFormDefault="unqualified"
  xmlns="info:srw/xmlns/1/sru-searchResultAnalysis" 
targetNamespace="info:srw/xmlns/1/sru-searchResultAnalysis">
	<!-- Root Declaration -->
	<xs:element name="searchResultAnalysis" type="searchResultAnalysisDefinition"/>
	<!-- End Root Declaration -->
	<!--  -->
	<!--searchResultAnalysisDefinition-->
	<xs:complexType name="searchResultAnalysisDefinition">
		<xs:choice>
			<xs:element ref="datasource" maxOccurs="unbounded"/>
			<xs:element ref="subqueryResult" maxOccurs="unbounded"/>
		</xs:choice>
	</xs:complexType>
	<!-- datasourceDefinition -->
	<xs:complexType name="datasourceDefinition">
		<xs:sequence>
			<xs:element ref="datasourceDisplayLabel" minOccurs="0"/>
			<xs:element ref="datasourceDescription" minOccurs="0"/>
			<xs:element ref="baseURL" minOccurs="0"/>
			<xs:element ref="subqueryResults"/>
		</xs:sequence>
		<xs:attribute name="full" type="fullDefinition"/>
	</xs:complexType>
	<!--  -->
	<!--subqueryResultsDefinition -->
	<xs:complexType name="subqueryResultsDefinition">
		<xs:sequence>
			<xs:element ref="subqueryResult" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<!-- subqueryResultDefinition  -->
	<xs:complexType name="subqueryResultDefinition">
		<xs:sequence>
			<xs:element ref="subqueryDisplayLabel" minOccurs="0"/>
			<xs:element ref="subquery"/>
			<xs:element ref="count"/>
			<xs:element ref="requestUrl" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="full" type="fullDefinition"/>
	</xs:complexType>
	<!--  -->
	<xs:simpleType name="fullDefinition">
		<xs:restriction base="xs:string">
			<xs:enumeration value="true"/>
		</xs:restriction>
	</xs:simpleType>
	<!--  Element Declarations -->
	<!--  -->
	<xs:element name="baseURL" type="xs:string"/>
	<xs:element name="count" type="xs:integer"/>
	<xs:element name="datasource" type="datasourceDefinition"/>
	<xs:element name="datasourceDescription" type="xs:string"/>
	<xs:element name="datasourceDisplayLabel" type="xs:string"/>
	<xs:element name="requestUrl" type="xs:anyURI"/>
	<xs:element name="subquery" type="xs:string"/>
	<xs:element name="subqueryDisplayLabel" type="xs:string"/>
	<xs:element name="subqueryResult" type="subqueryResultDefinition"/>
	<xs:element name="subqueryResults" type="subqueryResultsDefinition"/>
	<!--  -->
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"; elementFormDefault="qualified" attributeFormDefault="unqualified" xmlns="info:srw/xmlns/1/sru-facetedResults" targetNamespace="info:srw/xmlns/1/sru-facetedResults">
	<!-- Root Declaration -->
	<xs:element name="facetedResults" type="facetedResultsDefinition"/>
	<!-- End Root Declaration -->
	<!--  -->
	<!--facetedResultsDefinition-->
	<xs:complexType name="facetedResultsDefinition">
		<xs:choice>
			<xs:element ref="datasource" maxOccurs="unbounded"/>
			<xs:element ref="facet" maxOccurs="unbounded"/>
		</xs:choice>
	</xs:complexType>
	<!-- datasourceDefinition -->
	<xs:complexType name="datasourceDefinition">
		<xs:sequence>
			<xs:element ref="datasourceDisplayLabel" minOccurs="0"/>
			<xs:element ref="datasourceDescription" minOccurs="0"/>
			<xs:element ref="baseURL" minOccurs="0"/>
			<xs:element ref="facets"/>
		</xs:sequence>
	</xs:complexType>
	<!--  -->
	<!-- facetsDefinition -->
	<xs:complexType name="facetsDefinition">
		<xs:sequence>
			<xs:element ref="facet" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<!-- facetDefinition  -->
	<xs:complexType name="facetDefinition">
		<xs:sequence>
			<xs:element ref="facetDisplayLabel" minOccurs="0"/>
			<xs:element ref="facetDescription" minOccurs="0"/>
			<xs:element ref="index" minOccurs="0"/>
			<xs:element ref="relation" minOccurs="0"/>
			<xs:element ref="terms"/>
		</xs:sequence>
	</xs:complexType>
	<!--  termsDefinition-->
	<xs:complexType name="termsDefinition">
		<xs:sequence>
			<xs:element ref="term" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<!--  termDefinition-->
	<xs:complexType name="termDefinition">
		<xs:sequence>
			<xs:element ref="actualTerm"/>
			<xs:element ref="query" minOccurs="0"/>
			<xs:element ref="requestUrl" minOccurs="0"/>
			<xs:element ref="count"/>
		</xs:sequence>
	</xs:complexType>
	<!--  -->
	<!--  -->
	<!--  Element Declarations -->
	<!--  -->
	<xs:element name="actualTerm" type="xs:string"/>
	<xs:element name="baseURL" type="xs:string"/>
	<xs:element name="count" type="xs:integer"/>
	<xs:element name="datasource" type="datasourceDefinition"/>
	<xs:element name="datasourceDescription" type="xs:string"/>
	<xs:element name="datasourceDisplayLabel" type="xs:string"/>
	<xs:element name="facet" type="facetDefinition"/>
	<xs:element name="facetBaseURL" type="xs:string"/>
	<xs:element name="facetDisplayLabel" type="xs:string"/>
	<xs:element name="facetDescription" type="xs:string"/>
	<xs:element name="facets" type="facetsDefinition"/>
	<xs:element name="index" type="xs:string"/>
	<xs:element name="term" type="termDefinition"/>
	<xs:element name="terms" type="termsDefinition"/>
	<xs:element name="query" type="xs:string"/>
	<xs:element name="relation" type="xs:string"/>
	<xs:element name="requestUrl" type="xs:anyURI"/>
	<!--  -->
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
xmlns:xs="http://www.w3.org/2001/XMLSchema"; 
elementFormDefault="qualified" 
attributeFormDefault="unqualified"
 xmlns="info:srw/xmlns/1/sru-xcql"
  targetNamespace="info:srw/xmlns/1/sru-xcql">
	<!-- 
root element -->
	<xs:element name="xcql" type="xcqlDefinition"/>
	<!-- 
	****** Major Definitions 
-->
	<!--
 xcqlDefinition-->
	<xs:complexType name="xcqlDefinition">
		<xs:sequence>
			<xs:element ref="prefixes" minOccurs="0"/>
			<xs:element ref="triple"/>
			<xs:element ref="sortKeys"/>
		</xs:sequence>
	</xs:complexType>
	<!-- 
prefixesDefinition-->
	<xs:complexType name="prefixesDefinition">
		<xs:sequence>
			<xs:element ref="prefix" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<!--
 prefixDefinition-->
	<xs:complexType name="prefixDefinition">
		<xs:sequence>
			<xs:element ref="name"/>
			<xs:element ref="identifier"/>
		</xs:sequence>
	</xs:complexType>
	<!--
 tripleDefinition-->
	<xs:complexType name="tripleDefinition">
		<xs:choice>
			<xs:element ref="searchClause"/>
			<xs:sequence>
				<xs:element ref="Boolean"/>
				<xs:element ref="leftOperand"/>
				<xs:element ref="rightOperand"/>
			</xs:sequence>
		</xs:choice>
	</xs:complexType>
	<!--  
sortKeysDefinition -->
	<xs:complexType name="sortKeysDefinition">
		<xs:sequence>
			<xs:element ref="key" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<!-- 
	****** Subordinate  Definitions
 -->
	<!--
 BooleanPlusModifier-->
	<xs:complexType name="BooleanPlusModifier">
		<xs:sequence>
			<xs:element name="value" type="BooleanValue"/>
			<xs:element ref="modifiers" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<!--
 BooleanValue-->
	<xs:simpleType name="BooleanValue">
		<xs:restriction base="xs:string">
			<xs:enumeration value="and"/>
			<xs:enumeration value="or"/>
			<xs:enumeration value="not"/>
			<xs:enumeration value="prox"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- 
 keyDefinition -->
	<xs:complexType name="keyDefinition">
		<xs:sequence>
			<xs:element ref="index"/>
			<xs:element ref="modifiers"/>
		</xs:sequence>
	</xs:complexType>
	<!-- 
 modifierDefinition -->
	<xs:complexType name="modifierDefinition">
		<xs:sequence>
			<xs:element ref="type"/>
			<xs:sequence minOccurs="0">
				<xs:element ref="comparison"/>
				<xs:element ref="value"/>
			</xs:sequence>
		</xs:sequence>
	</xs:complexType>
	<!--
  modifiersDefinition -->
	<xs:complexType name="modifiersDefinition">
		<xs:sequence>
			<xs:element ref="modifier" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<!-- 
operandDefinition-->
	<xs:complexType name="operandDefinition">
		<xs:choice>
			<xs:element ref="searchClause"/>
			<xs:element ref="triple"/>
		</xs:choice>
	</xs:complexType>
	<!-- 
searchClauseDefinition-->
	<xs:complexType name="searchClauseDefinition">
		<xs:choice>
			<xs:element ref="term"/>
			<xs:sequence>
				<xs:element ref="index"/>
				<xs:element ref="relation"/>
				<xs:element ref="term"/>
			</xs:sequence>
		</xs:choice>
	</xs:complexType>
	<!--
  valuePlusModifier -->
	<xs:complexType name="valuePlusModifier">
		<xs:sequence>
			<xs:element ref="value"/>
			<xs:element ref="modifiers" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<!-- 
*******element declarations 
-->
	<xs:element name="Boolean" type="BooleanPlusModifier"/>
	<xs:element name="comparison" type="xs:string"/>
	<xs:element name="identifier" type="xs:anyURI"/>
	<xs:element name="index" type="xs:string"/>
	<xs:element name="key" type="keyDefinition"/>
	<xs:element name="leftOperand" type="operandDefinition"/>
	<xs:element name="modifier" type="modifierDefinition"/>
	<xs:element name="modifiers" type="modifiersDefinition"/>
	<xs:element name="name" type="xs:string"/>
	<xs:element name="prefix" type="prefixDefinition"/>
	<xs:element name="prefixes" type="prefixesDefinition"/>
	<xs:element name="relation" type="valuePlusModifier"/>
	<xs:element name="rightOperand" type="operandDefinition"/>
	<xs:element name="searchClause" type="searchClauseDefinition"/>
	<xs:element name="sortKeys" type="sortKeysDefinition"/>
	<xs:element name="term" type="xs:string"/>
	<xs:element name="type" type="xs:string"/>
	<xs:element name="triple" type="tripleDefinition"/>
	<xs:element name="value" type="xs:string"/>
	<!-- -->
</xs:schema>


<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
xmlns:xs="http://www.w3.org/2001/XMLSchema"; 
xmlns="info:srw/xmlns/1/sru-2-0-response" 
targetNamespace="info:srw/xmlns/1/sru-2-0-response" 
xmlns:diag="info:srw/xmlns/1/sru-2-0-diagnostic" 
xmlns:facet="info:srw/xmlns/1/sru-facetedResults" 
xmlns:sra="info:srw/xmlns/1/sru-searchResultAnalysis" 
xmlns:xcql="info:srw/xmlns/1/sru-xcql"   
elementFormDefault="qualified" 
attributeFormDefault="unqualified">
	<xs:import namespace="info:srw/xmlns/1/sru-2-0-diagnostic" schemaLocation="diagnostic.xsd"/>
	<xs:import namespace="info:srw/xmlns/1/sru-facetedResults" schemaLocation="facetedResults.xsd"/>
		<xs:import namespace="info:srw/xmlns/1/sru-searchResultAnalysis" schemaLocation="searchResultAnalysis.xsd"/>
			<xs:import namespace="info:srw/xmlns/1/sru-xcql" schemaLocation="xcql.xsd"/>
	<!--  
*********** Root element declaration
-->
	<xs:element name="searchRetrieveResponse" type="searchRetrieveResponseDefinition"/>
	<!--  
  
****************Main Type Definition: searchRetrieveResponseDefinition
-->
	<xs:complexType name="searchRetrieveResponseDefinition">
		<xs:sequence>
			<xs:element ref="numberOfRecords" minOccurs="0"/>
			<xs:element ref="resultCountPrecision" minOccurs="0"/>
			<xs:element ref="resultSetId" minOccurs="0"/>
			<xs:element ref="resultSetIdleTime" minOccurs="0"/>
			<xs:element ref="records" minOccurs="0"/>
			<xs:element ref="nextRecordPosition" minOccurs="0"/>
			<xs:element ref="echoedSearchRetrieveRequest" minOccurs="0"/>
			<xs:element ref="diagnostics" minOccurs="0"/>
			<xs:element ref="facetedResults" minOccurs="0"/>
			<xs:element ref="searchResultAnalysis" minOccurs="0"/>
			<xs:element ref="extraResponseData" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<!--  
  
**************** Auxiliary Type Definitions (in alphabetical order)
-->
	<!--  
diagnosticsDefinition
-->
	<xs:complexType name="diagnosticsDefinition">
		<xs:sequence>
			<xs:element ref="diag:diagnostic" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<!--  
echoedRequestDefinition
-->
	<xs:complexType name="echoedRequestDefinition">
		<xs:sequence>
			<xs:element ref="queryType" minOccurs="0"/>
			<xs:element ref="query" minOccurs="0"/>
			<xs:element ref="xQuery" minOccurs="0"/> 
			<!-- need to fix this. Won't validate. -->
			<!-- "query" is a string representation, and xQuery is a structured (e.g. XML) representation, of the query -->
			<xs:element ref="startRecord" minOccurs="0"/>
			<xs:element ref="maximumRecords" minOccurs="0"/>
			<xs:element ref="recordPacking" minOccurs="0"/>
			<xs:element ref="recordSchema" minOccurs="0"/>
			<xs:element ref="facetParameter" minOccurs="0" maxOccurs="unbounded"/>
			<!-- one or more strings of form "facetParameter=value" -->
			<xs:element ref="resultSetTTL" minOccurs="0"/>
			<xs:element ref="sortKeys" minOccurs="0"/>
			<xs:element ref="xSortKeys" minOccurs="0"/>
				<!-- "sortKeys" is a string representation, and xsortKeys is a structured (e.g. XML) representation, of the sort keys -->
			<xs:element ref="stylesheet" minOccurs="0"/>
				<xs:element ref="rendering" minOccurs="0"/>
			<xs:element ref="extraRequestParameter" minOccurs="0" maxOccurs="unbounded"/>
					<xs:element ref="acceptParameter" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<!--  
extensionDefinition
-->
	<xs:complexType name="extensionDefinition">
		<xs:sequence>
			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<!--  
recordDefinition
-->
	<xs:complexType name="recordDefinition">
		<xs:sequence>
			<xs:element ref="recordSchema"/>
			<xs:element ref="recordPacking" minOccurs="0"/>
			<xs:element ref="recordData"/>
			<xs:element ref="recordPosition" minOccurs="0"/>
			<xs:element ref="extraRecordData" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<!--  
recordPackingDefinition
-->
	<xs:simpleType name="recordPackingDefinition">
	<xs:restriction base="xs:string">
<xs:enumeration value="string"/>	
<xs:enumeration value="xml"/>	
	</xs:restriction>
	</xs:simpleType>

	<!--  
recordsDefinition
-->
	<xs:complexType name="recordsDefinition">
		<xs:sequence>
			<xs:element ref="record" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<!--  
renderingDefinition
-->
	<xs:simpleType name="renderingDefinition">
	<xs:restriction base="xs:string">
<xs:enumeration value="client"/>	
<xs:enumeration value="server"/>	
	</xs:restriction>
	</xs:simpleType>
	<!--  
sortKeyDefinition
-->
	<xs:complexType name="sortKeyDefinition">
		<xs:sequence>
			<xs:element ref="path"/>
			<xs:element ref="schema" minOccurs="0"/>
			<xs:element ref="ascending" minOccurs="0"/>
			<xs:element ref="caseSensitive" minOccurs="0"/>
			<xs:element ref="missingValue" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<!--  
stringOrXmlFragmentDefinition
-->
	<xs:complexType name="stringOrXmlFragmentDefinition" mixed="true">
		<xs:sequence>
			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<!--  
xSortKeysDefinition
-->
	<xs:complexType name="xSortKeysDefinition">
		<xs:sequence>
			<xs:element ref="sortKey" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<!--
****************element declarations
-->
	<xs:element name="acceptParameter" type="xs:string"/>
	<xs:element name="ascending" type="xs:boolean"/>
	<xs:element name="caseSensitive" type="xs:boolean"/>
	<xs:element name="diagnostics" type="diagnosticsDefinition"/>
	<xs:element name="displayTerm" type="xs:string"/>
	<xs:element name="echoedSearchRetrieveRequest" type="echoedRequestDefinition"/>
	<xs:element name="extraRecordData" type="extensionDefinition"/>
	<xs:element name="extraRequestData" type="extensionDefinition"/>
		<xs:element name="extraRequestParameter" type="xs:string"/>
	<xs:element name="extraResponseData" type="extensionDefinition"/>
	<xs:element name="extraTermData" type="extensionDefinition"/>
	<xs:element name="facetedResults" type="facet:facetedResultsDefinition"/>
	<xs:element name="facetParameter" type="xs:string"/>
	<xs:element name="maximumRecords" type="xs:nonNegativeInteger"/>
	<xs:element name="maximumTerms" type="xs:positiveInteger"/>
	<xs:element name="missingValue" type="xs:string"/>
	<xs:element name="nextRecordPosition" type="xs:positiveInteger"/>
	<xs:element name="numberOfRecords" type="xs:nonNegativeInteger"/>
	<xs:element name="path" type="xs:string"/>
	<xs:element name="queryType" type="xs:string"/>
	<xs:element name="query" type="xs:string"/>
	<xs:element name="record" type="recordDefinition"/>
	<xs:element name="recordData" type="stringOrXmlFragmentDefinition"/>
	<xs:element name="recordPacking" type="recordPackingDefinition"/>
	<xs:element name="recordPosition" type="xs:positiveInteger"/>
	<xs:element name="records" type="recordsDefinition"/>
	<xs:element name="recordSchema" type="xs:string"/>
	<xs:element name="rendering" type="renderingDefinition"/>
	<xs:element name="responsePosition" type="xs:nonNegativeInteger"/>
	<xs:element name="resultCountPrecision" type="xs:string"/>
	<xs:element name="resultSetId" type="xs:string"/>
	<xs:element name="resultSetIdleTime" type="xs:positiveInteger"/>
	<xs:element name="resultSetTTL" type="xs:nonNegativeInteger"/>
	<xs:element name="schema" type="xs:string"/>
	<xs:element name="searchResultAnalysis" type="sra:searchResultAnalysisDefinition"/>
	<xs:element name="sortKey" type="sortKeyDefinition"/>
	<xs:element name="sortKeys" type="xs:string"/>
	<xs:element name="startRecord" type="xs:positiveInteger" default="1"/>
	<xs:element name="stylesheet" type="xs:anyURI"/>
	<xs:element name="value" type="xs:string"/>
<xs:element name="xQuery" type="xcql:xcqlDefinition"/> 
			<!-- need to fix this. Won't validate. -->
	<xs:element name="xSortKeys" type="xSortKeysDefinition"/>
	<!-- -->
</xs:schema>


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]