HomeDigital EditionSys-Con RadioSearch Web Services Cd
B2B Beginning WS Business Process Management Case Studies Content Management Distributing Computing e-Business Electronic Data Interchange Enterprise Industry Insight Integration Interviews Java & Web Services .NET Portal Product Reviews Scalability & Performance Security SOAP Source Code UDDI Wireless WS Standards WS Tips & Techniques WSDL WS Editorials XML

Semantic Discovery for Web Services by Joram Borenstein & Joshua Fox
WSJ Vol 03 Issue 4 - pg.24

	


Listing 1

  <?xml version="1.0" encoding="UTF-8" ?> 
- <rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:xsd="http://www.w3.org/2000/10/XMLSchema#"
xmlns:daml="http://www.daml.org/2001/03/daml+oil#">
- <daml:Ontology rdf:about="">
  <dc:date>Dec 11, 2002 7:56 AM</dc:date> 
  <dc:creator /> 
  <dc:description /> 
  <daml:imports rdf:resource=
  "http://www.daml.org/2001/03/daml+oil" /> 
  </daml:Ontology>
- <daml:Class rdf:ID="IncomeTax">
  <rdfs:label>IncomeTax</rdfs:label> 
  </daml:Class>
- <daml:Class rdf:ID="Jurisdiction">
  <rdfs:label>Jurisdiction</rdfs:label> 
  </daml:Class>
- <daml:Class rdf:ID="MonetarySum">
  <rdfs:label>MonetarySum</rdfs:label> 
  </daml:Class>
- <daml:Class rdf:ID="Municipality">
  <rdfs:label>Municipality</rdfs:label> 
  </daml:Class>
- <daml:Class rdf:ID="Rate">
  <rdfs:label>Rate</rdfs:label> 
  </daml:Class>
- <daml:Class rdf:ID="SalesTax">
  <rdfs:label>SalesTax</rdfs:label> 
  </daml:Class>
- <daml:Class rdf:ID="State">
  <rdfs:label>State</rdfs:label> 
  </daml:Class>
- <daml:Class rdf:ID="Tax">
  <rdfs:label>Tax</rdfs:label> 
  </daml:Class>
- <daml:Class rdf:ID="ZipCode">
  <rdfs:label>ZipCode</rdfs:label> 
  </daml:Class>
- <daml:ObjectProperty rdf:ID="Tax.amount">
  <rdf:type rdf:resource=
  "http://www.daml.org/2001/03/daml+oil#UniqueProperty" /> 
  <rdfs:domain rdf:resource="#Tax" /> 
  <rdfs:domain rdf:resource="#IncomeTax" /> 
  <rdfs:domain rdf:resource="#SalesTax" /> 
  <rdfs:range rdf:resource="#MonetarySum" /> 
  </daml:ObjectProperty>
- <daml:Class rdf:about="#Tax">
- <rdfs:subClassOf>
- <daml:Restriction daml:minCardinality="0">
  <daml:onProperty rdf:resource="#Tax.amount" /> 
  </daml:Restriction>
  </rdfs:subClassOf>
  </daml:Class>
- <daml:Class rdf:about="#Tax">
- <rdfs:subClassOf>
- <daml:Restriction daml:maxCardinality="1">
  <daml:onProperty rdf:resource="#Tax.amount" /> 
  </daml:Restriction>
  </rdfs:subClassOf>
  </daml:Class>
- <daml:DatatypeProperty rdf:ID="MonetarySum.currencyType">
  <rdf:type rdf:resource=
  "http://www.daml.org/2001/03/daml+oil#UniqueProperty" /> 
  <rdfs:domain rdf:resource="#MonetarySum" /> 
  <rdfs:range rdf:resource=
  "http://www.w3.org/2000/10/XMLSchema#string" /> 
  </daml:DatatypeProperty>
- <daml:Class rdf:about="#MonetarySum">
- <rdfs:subClassOf>
- <daml:Restriction daml:minCardinality="0">
  <daml:onProperty rdf:resource="#MonetarySum.currencyType" /> 
  </daml:Restriction>
  </rdfs:subClassOf>
  </daml:Class>
- <daml:Class rdf:about="#MonetarySum">
- <rdfs:subClassOf>
- <daml:Restriction daml:maxCardinality="1">
  <daml:onProperty rdf:resource="#MonetarySum.currencyType" /> 
  </daml:Restriction>
  </rdfs:subClassOf>
  </daml:Class>
- <daml:DatatypeProperty rdf:ID="ZipCode.fiveDigit">
  <rdf:type rdf:resource=
  "http://www.daml.org/2001/03/daml+oil#UniqueProperty" /> 
  <rdfs:domain rdf:resource="#ZipCode" /> 
  <rdfs:range rdf:resource=
  "http://www.w3.org/2000/10/XMLSchema#string" /> 
  </daml:DatatypeProperty>
- <daml:Class rdf:about="#ZipCode">
- <rdfs:subClassOf>
- <daml:Restriction daml:minCardinality="0">
  <daml:onProperty rdf:resource="#ZipCode.fiveDigit" /> 
  </daml:Restriction>
  </rdfs:subClassOf>
  </daml:Class>
- <daml:Class rdf:about="#ZipCode">
- <rdfs:subClassOf>
- <daml:Restriction daml:maxCardinality="1">
  <daml:onProperty rdf:resource="#ZipCode.fiveDigit" /> 
  </daml:Restriction>
  </rdfs:subClassOf>
  </daml:Class>
- <daml:ObjectProperty rdf:ID="Tax.gross">
  <rdf:type rdf:resource=
  "http://www.daml.org/2001/03/daml+oil#UniqueProperty" /> 
  <rdfs:domain rdf:resource="#Tax" /> 
  <rdfs:domain rdf:resource="#IncomeTax" /> 
  <rdfs:domain rdf:resource="#SalesTax" /> 
  <rdfs:range rdf:resource="#MonetarySum" /> 
  </daml:ObjectProperty>
- <daml:Class rdf:about="#Tax">
- <rdfs:subClassOf>
- <daml:Restriction daml:minCardinality="0">
  <daml:onProperty rdf:resource="#Tax.gross" /> 
  </daml:Restriction>
  </rdfs:subClassOf>
  </daml:Class>
- <daml:Class rdf:about="#Tax">
- <rdfs:subClassOf>
- <daml:Restriction daml:maxCardinality="1">
  <daml:onProperty rdf:resource="#Tax.gross" /> 
  </daml:Restriction>
  </rdfs:subClassOf>
  </daml:Class>
- <daml:ObjectProperty rdf:ID="Tax.jurisdiction">
  <rdf:type rdf:resource=
  "http://www.daml.org/2001/03/daml+oil#UniqueProperty" /> 
  <rdfs:domain rdf:resource="#Tax" /> 
  <rdfs:domain rdf:resource="#IncomeTax" /> 
  <rdfs:domain rdf:resource="#SalesTax" /> 
  <rdfs:range rdf:resource="#Jurisdiction" /> 
  </daml:ObjectProperty>
- <daml:Class rdf:about="#Tax">
- <rdfs:subClassOf>
- <daml:Restriction daml:minCardinality="0">
  <daml:onProperty rdf:resource="#Tax.jurisdiction" /> 
  </daml:Restriction>
  </rdfs:subClassOf>
  </daml:Class>
- <daml:Class rdf:about="#Tax">
- <rdfs:subClassOf>
- <daml:Restriction daml:maxCardinality="1">
  <daml:onProperty rdf:resource="#Tax.jurisdiction" /> 
  </daml:Restriction>
  </rdfs:subClassOf>
  </daml:Class>
- <daml:DatatypeProperty rdf:ID="Rate.multiplier">
  <rdf:type rdf:resource=
  "http://www.daml.org/2001/03/daml+oil#UniqueProperty" /> 
  <rdfs:domain rdf:resource="#Rate" /> 
  <rdfs:range rdf:resource=
  "http://www.w3.org/2000/10/XMLSchema#decimal" /> 
  </daml:DatatypeProperty>
- <daml:Class rdf:about="#Rate">
- <rdfs:subClassOf>
- <daml:Restriction daml:minCardinality="0">
  <daml:onProperty rdf:resource="#Rate.multiplier" /> 
  </daml:Restriction>
  </rdfs:subClassOf>
  </daml:Class>
- <daml:Class rdf:about="#Rate">
- <rdfs:subClassOf>
- <daml:Restriction daml:maxCardinality="1">
  <daml:onProperty rdf:resource="#Rate.multiplier" /> 
  </daml:Restriction>
  </rdfs:subClassOf>
  </daml:Class>
- <daml:DatatypeProperty rdf:ID="ZipCode.nineDigit">
  <rdf:type rdf:resource=
  "http://www.daml.org/2001/03/daml+oil#UniqueProperty" /> 
  <rdfs:domain rdf:resource="#ZipCode" /> 
  <rdfs:range rdf:resource=
  "http://www.w3.org/2000/10/XMLSchema#string" /> 
  </daml:DatatypeProperty>
- <daml:Class rdf:about="#ZipCode">
- <rdfs:subClassOf>
- <daml:Restriction daml:minCardinality="0">
  <daml:onProperty rdf:resource="#ZipCode.nineDigit" /> 
  </daml:Restriction>
  </rdfs:subClassOf>
  </daml:Class>
- <daml:Class rdf:about="#ZipCode">
- <rdfs:subClassOf>
- <daml:Restriction daml:maxCardinality="1">
  <daml:onProperty rdf:resource="#ZipCode.nineDigit" /> 
  </daml:Restriction>
  </rdfs:subClassOf>
  </daml:Class>
- <daml:DatatypeProperty rdf:ID="Rate.percentage">
  <rdf:type rdf:resource=
  "http://www.daml.org/2001/03/daml+oil#UniqueProperty" /> 
  <rdfs:domain rdf:resource="#Rate" /> 
  <rdfs:range rdf:resource=
  "http://www.w3.org/2000/10/XMLSchema#decimal" /> 
  </daml:DatatypeProperty>
- <daml:Class rdf:about="#Rate">
- <rdfs:subClassOf>
- <daml:Restriction daml:minCardinality="0">
  <daml:onProperty rdf:resource="#Rate.percentage" /> 
  </daml:Restriction>
  </rdfs:subClassOf>
  </daml:Class>
- <daml:Class rdf:about="#Rate">
- <rdfs:subClassOf>
- <daml:Restriction daml:maxCardinality="1">
  <daml:onProperty rdf:resource="#Rate.percentage" /> 
  </daml:Restriction>
  </rdfs:subClassOf>
  </daml:Class>
- <daml:DatatypeProperty rdf:ID="MonetarySum.quantity">
  <rdf:type rdf:resource=
  "http://www.daml.org/2001/03/daml+oil#UniqueProperty" /> 
  <rdfs:domain rdf:resource="#MonetarySum" /> 
  <rdfs:range rdf:resource=
  "http://www.w3.org/2000/10/XMLSchema#decimal" /> 
  </daml:DatatypeProperty>
- <daml:Class rdf:about="#MonetarySum">
- <rdfs:subClassOf>
- <daml:Restriction daml:minCardinality="0">
  <daml:onProperty rdf:resource="#MonetarySum.quantity" /> 
  </daml:Restriction>
  </rdfs:subClassOf>
  </daml:Class>
- <daml:Class rdf:about="#MonetarySum">
- <rdfs:subClassOf>
- <daml:Restriction daml:maxCardinality="1">
  <daml:onProperty rdf:resource="#MonetarySum.quantity" /> 
  </daml:Restriction>
  </rdfs:subClassOf>
  </daml:Class>
- <daml:ObjectProperty rdf:ID="Tax.rate">
  <rdf:type rdf:resource=
  "http://www.daml.org/2001/03/daml+oil#UniqueProperty" /> 
  <rdfs:domain rdf:resource="#Tax" /> 
  <rdfs:domain rdf:resource="#IncomeTax" /> 
  <rdfs:domain rdf:resource="#SalesTax" /> 
  <rdfs:range rdf:resource="#Rate" /> 
  </daml:ObjectProperty>
- <daml:Class rdf:about="#Tax">
- <rdfs:subClassOf>
- <daml:Restriction daml:minCardinality="0">
  <daml:onProperty rdf:resource="#Tax.rate" /> 
  </daml:Restriction>
  </rdfs:subClassOf>
  </daml:Class>
- <daml:Class rdf:about="#Tax">
- <rdfs:subClassOf>
- <daml:Restriction daml:maxCardinality="1">
  <daml:onProperty rdf:resource="#Tax.rate" /> 
  </daml:Restriction>
  </rdfs:subClassOf>
  </daml:Class>
- <daml:ObjectProperty rdf:ID="Jurisdiction.zipCodes">
  <rdfs:domain rdf:resource="#Jurisdiction" /> 
  <rdfs:domain rdf:resource="#Municipality" /> 
  <rdfs:domain rdf:resource="#State" /> 
  <rdfs:range rdf:resource="#ZipCode" /> 
  </daml:ObjectProperty>
- <daml:Class rdf:about="#Jurisdiction">
- <rdfs:subClassOf>
- <daml:Restriction daml:minCardinality="1">
  <daml:onProperty rdf:resource="#Jurisdiction.zipCodes" /> 
  </daml:Restriction>
  </rdfs:subClassOf>
  </daml:Class>
- <daml:DatatypeProperty rdf:ID="MonetarySum.unit~2">
  <rdf:type rdf:resource=
  "http://www.daml.org/2001/03/daml+oil#UniqueProperty" /> 
  <rdfs:domain rdf:resource="#MonetarySum" /> 
  <rdfs:range rdf:resource=
  "http://www.w3.org/2000/10/XMLSchema#string" /> 
  </daml:DatatypeProperty>
- <daml:Class rdf:about="#MonetarySum">
- <rdfs:subClassOf>
- <daml:Restriction daml:minCardinality="0">
  <daml:onProperty rdf:resource="#MonetarySum.unit~2" /> 
  </daml:Restriction>
  </rdfs:subClassOf>
  </daml:Class>
- <daml:Class rdf:about="#MonetarySum">
- <rdfs:subClassOf>
- <daml:Restriction daml:maxCardinality="1">
  <daml:onProperty rdf:resource="#MonetarySum.unit~2" /> 
  </daml:Restriction>
  </rdfs:subClassOf>
  </daml:Class>
- <daml:ObjectProperty rdf:ID="Jurisdiction.city~2">
  <rdf:type rdf:resource=
  "http://www.daml.org/2001/03/daml+oil#UniqueProperty" /> 
  <rdfs:domain rdf:resource="#Jurisdiction" /> 
  <rdfs:domain rdf:resource="#Municipality" /> 
  <rdfs:domain rdf:resource="#State" /> 
  <rdfs:range rdf:resource="#Municipality" /> 
  </daml:ObjectProperty>
- <daml:Class rdf:about="#Jurisdiction">
- <rdfs:subClassOf>
- <daml:Restriction daml:minCardinality="0">
  <daml:onProperty rdf:resource="#Jurisdiction.city~2" /> 
  </daml:Restriction>
  </rdfs:subClassOf>
  </daml:Class>
- <daml:Class rdf:about="#Jurisdiction">
- <rdfs:subClassOf>
- <daml:Restriction daml:maxCardinality="1">
  <daml:onProperty rdf:resource="#Jurisdiction.city~2" /> 
  </daml:Restriction>
  </rdfs:subClassOf>
  </daml:Class>
- <daml:Class rdf:about="#IncomeTax">
  <rdfs:subClassOf rdf:resource="#Tax" /> 
  </daml:Class>
- <daml:Class rdf:about="#SalesTax">
  <rdfs:subClassOf rdf:resource="#Tax" /> 
  </daml:Class>
- <daml:Class rdf:about="#Municipality">
  <rdfs:subClassOf rdf:resource="#Jurisdiction" /> 
  </daml:Class>
- <daml:Class rdf:about="#State">
  <rdfs:subClassOf rdf:resource="#Jurisdiction" /> 
  </daml:Class>
  </rdf:RDF>


Listing 2: WSDL File

xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:s="http://www.w3.org/2001/XMLSchema"
xmlns:finance="http://www.financialexample.com/TaxService/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns="http://schemas.xmlsoap.org/wsdl/"
targetNamespace="http://www.financialexample.com/TaxService/">
	<types>
		<s:schema targetNamespace=
		"http://www.financialexample.com/TaxService/"
		elementFormDefault="qualified">
			<s:complexType name="Tax">
				<s:sequence>
				<s:element name="tax" type="s:float"/>
				<s:element name="rate" type="s:float"/>
				</s:sequence>
			</s:complexType>
			<s:complexType name="GrossPayment">
				<s:sequence>
				<s:element name="amount" type="s:float"/>
				<s:element name="zip" type="s:string"/>
				</s:sequence>
			</s:complexType>
		</s:schema>
	</types>
	<message name="calculateTaxIn">
		<part name="Body" type="finance:GrossPayment"/>
	</message>
	<message name="calculateTaxOut">
		<part name="Body" type="finance:Tax"/>
	</message>
	<portType name="TaxServiceSoap">
		<operation name="calculateTax">
			<input message="finance:calculateTaxIn"/>
			<output message="finance:calculateTaxOut"/>
		</operation>
	</portType>
	<binding name="TaxServiceSoap" type="finance:TaxServiceSoap">
		<soap:binding style="document"
		transport="http://schemas.xmlsoap.org/soap/http"/>
		<operation name="calculateTax">
			<soap:operation
soapAction="http://www.financialexample.com/TaxService/calculateTax"
style="document"/>
			<input>
				<soap:body use="literal"/>
			</input>
			<output>
				<soap:body use="literal"/>
			</output>
		</operation>
	</binding>
	<service name="TaxService">
		<documentation>A sample Time service</documentation>
		<port name="TaxServiceSoap" binding="finance:TaxServiceSoap">
			<soap:address
location="http://www.financialexample.com/TaxService/TaxService.jsp"/>
		</port>
	</service>
</definitions>