- From: Daniela CLARO <daniela.claro@eseo.fr>
- Date: Fri, 24 Sep 2004 10:07:29 +0200
- To: "'public-sws-ig'" <public-sws-ig@w3.org>
Hello People,
I've composed three web services (Addition, Subtraction, Multiplication)
into a service called Calculator. The goal is that I sent A, B parameters to
Calculator Service, and than it passes to Addition, after it passes A,B to
Subtraction. The results of Addition (c) and Subtraction (c') I passed to
the Multiplication service respectively.
I am using OWL-S API, all things works all right but not allways. I didn't
change anything and only execute my RunService.java(the same as in Zip Code
example). One time it works, and in a second time it didn't work and says
that the Parameter B in Subtraction is missing.
Did anybody else have the same problem?
I put here my Calculator.owl:
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
xmlns:owl= "http://www.w3.org/2002/07/owl#"
xmlns:rdfs= "http://www.w3.org/2000/01/rdf-schema#"
xmlns:rdf= "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:factbook= "http://www.daml.org/2003/09/factbook/factbook-ont#"
xmlns:service= "http://www.daml.org/services/owl-s/1.0/Service.owl#"
xmlns:process= "http://www.daml.org/services/owl-s/1.0/Process.owl#"
xmlns:profile= "http://www.daml.org/services/owl-s/1.0/Profile.owl#"
xmlns:grounding=
"http://www.daml.org/services/owl-s/1.0/Grounding.owl#"
xml:base= "http://localhost:8080/ws/Calculator.owl"
>
<owl:Ontology rdf:about="">
<owl:imports rdf:resource="http://localhost:8080/ws/Addition.owl"/>
<owl:imports rdf:resource="http://localhost:8080/ws/Subtraction.owl"/>
<owl:imports rdf:resource="http://localhost:8080/ws/Multiplication.owl"/>
</owl:Ontology>
<!-- Service description -->
<service:Service rdf:ID="CalculatorService">
<service:presents rdf:resource="#CalculatorProfile"/>
<service:describedBy rdf:resource="#CalculatorProcessModel"/>
<service:supports rdf:resource="#CalculatorGrounding"/>
</service:Service>
<!-- Profile description -->
<profile:Profile rdf:ID="CalculatorProfile">
<service:isPresentedBy rdf:resource="#CalculatorService"/>
<profile:serviceName xml:lang="en">Calculator</profile:serviceName>
<profile:textDescription xml:lang="en">Returns the calculator of A e B in
all operations</profile:textDescription>
<profile:hasInput rdf:resource="#a"/>
<profile:hasInput rdf:resource="#b"/>
<profile:hasOutput rdf:resource="#c"/>
</profile:Profile>
<!-- Process Model description -->
<process:ProcessModel rdf:ID="CalculatorProcessModel">
<service:describes rdf:resource="#CalculatorService"/>
<process:hasProcess rdf:resource="#CalculatorProcess"/>
</process:ProcessModel>
<process:CompositeProcess rdf:ID="CalculatorProcess">
<process:hasInput rdf:resource="#a"/>
<process:hasInput rdf:resource="#b"/>
<process:hasOutput rdf:resource="#c"/>
<process:composedOf>
<process:Sequence>
<process:components rdf:parseType="Collection">
<process:AtomicProcess
rdf:about="http://localhost:8080/ws/Addition.owl#AdditionProcess"/>
<process:AtomicProcess
rdf:about="http://localhost:8080/ws/Subtraction.owl#SubtractionProcess"/>
<process:AtomicProcess
rdf:about="http://localhost:8080/ws/Multiplication.owl#MultiplicationProcess
"/>
</process:components>
</process:Sequence>
</process:composedOf>
<!--Passa o valor A da calculator para A da Addition -->
<process:sameValues rdf:parseType="Collection">
<process:ValueOf>
<process:theParameter rdf:resource="#a"/>
<process:atProcess rdf:resource="#CalculatorProcess"/>
</process:ValueOf>
<process:ValueOf>
<process:theParameter
rdf:resource="http://localhost:8080/ws/Addition.owl#a"/>
<process:atProcess
rdf:resource="http://localhost:8080/ws/Addition.owl#AdditionProcess"/>
</process:ValueOf>
</process:sameValues>
<!--Passa o valor B da calculator para B da Addition -->
<process:sameValues rdf:parseType="Collection">
<process:ValueOf>
<process:theParameter rdf:resource="#b"/>
<process:atProcess rdf:resource="#CalculatorProcess"/>
</process:ValueOf>
<process:ValueOf>
<process:theParameter
rdf:resource="http://localhost:8080/ws/Addition.owl#b"/>
<process:atProcess
rdf:resource="http://localhost:8080/ws/Addition.owl#AdditionProcess"/>
</process:ValueOf>
</process:sameValues>
<!--Passa o valor A da Addition para A da Subtraction -->
<process:sameValues rdf:parseType="Collection">
<process:ValueOf>
<process:theParameter
rdf:resource="http://localhost:8080/ws/Addition.owl#a"/>
<process:atProcess
rdf:resource="http://localhost:8080/ws/Addition.owl#AdditionProcess"/>
</process:ValueOf>
<process:ValueOf>
<process:theParameter
rdf:resource="http://localhost:8080/ws/Subtraction.owl#a"/>
<process:atProcess
rdf:resource="http://localhost:8080/ws/Subtraction.owl#SubtractionProcess"/>
</process:ValueOf>
</process:sameValues>
<!--Passa o valor B da Addition para B da Subtraction -->
<process:sameValues rdf:parseType="Collection">
<process:ValueOf>
<process:theParameter
rdf:resource="http://localhost:8080/ws/Addition.owl#b"/>
<process:atProcess
rdf:resource="http://localhost:8080/ws/Addition.owl#AdditionProcess"/>
</process:ValueOf>
<process:ValueOf>
<process:theParameter
rdf:resource="http://localhost:8080/ws/Subtraction.owl#b"/>
<process:atProcess
rdf:resource="http://localhost:8080/ws/Subtraction.owl#SubtractionProcess"/>
</process:ValueOf>
</process:sameValues>
<!--Passa o valor C da Subtracao para A da Multiplicacao -->
<process:sameValues rdf:parseType="Collection">
<process:ValueOf>
<process:theParameter
rdf:resource="http://localhost:8080/ws/Subtraction.owl#c"/>
<process:atProcess
rdf:resource="http://localhost:8080/ws/Subtraction.owl#SubtractionProcess"/>
</process:ValueOf>
<process:ValueOf>
<process:theParameter
rdf:resource="http://localhost:8080/ws/Multiplication.owl#a"/>
<process:atProcess
rdf:resource="http://localhost:8080/ws/Multiplication.owl#MultiplicationProc
ess"/>
</process:ValueOf>
</process:sameValues>
<!--Passa o valor C da Adicao para B da Multiplicacao -->
<process:sameValues rdf:parseType="Collection">
<process:ValueOf>
<process:theParameter
rdf:resource="http://localhost:8080/ws/Addition.owl#c"/>
<process:atProcess
rdf:resource="http://localhost:8080/ws/Addition.owl#AdditionProcess"/>
</process:ValueOf>
<process:ValueOf>
<process:theParameter
rdf:resource="http://localhost:8080/ws/Multiplication.owl#b"/>
<process:atProcess
rdf:resource="http://localhost:8080/ws/Multiplication.owl#MultiplicationProc
ess"/>
</process:ValueOf>
</process:sameValues>
<!--Passa o valor C da Multiplicacao para C da Calculator -->
<process:sameValues rdf:parseType="Collection">
<process:ValueOf>
<process:theParameter
rdf:resource="http://localhost:8080/ws/Multiplication.owl#c"/>
<process:atProcess
rdf:resource="http://localhost:8080/ws/Multiplication.owl#MultiplicationProc
ess"/>
</process:ValueOf>
<process:ValueOf>
<process:theParameter rdf:resource="#c"/>
<process:atProcess rdf:resource="#CalculatorProcess"/>
</process:ValueOf>
</process:sameValues>
</process:CompositeProcess>
<process:Input rdf:ID="a">
<process:parameterType
rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:label>Calc A</rdfs:label>
</process:Input>
<process:Input rdf:ID="b">
<process:parameterType
rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:label>Calc B</rdfs:label>
</process:Input>
<process:Output rdf:ID="c">
<process:parameterType
rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:label>Calc Result</rdfs:label>
</process:Output>
<!-- Grounding description -->
<grounding:WsdlGrounding rdf:ID="CalculatorGrounding">
<!-- service:supportedBy rdf:resource="#BabelFishTranslatorService"/-->
<grounding:hasAtomicProcessGrounding
rdf:resource="http://localhost:8080/ws/Addition.owl#AdditionProcessGrounding
"/>
<grounding:hasAtomicProcessGrounding
rdf:resource="http://localhost:8080/ws/Subtraction.owl#SubtractionProcessGro
unding"/>
<grounding:hasAtomicProcessGrounding
rdf:resource="http://localhost:8080/ws/Multiplication.owl#MultiplicationProc
essGrounding"/>
</grounding:WsdlGrounding>
</rdf:RDF>
***********************
Here also the runnig application when it works, and when it dos not works:
Service:Calculator
Values:{Calc A=5, Calc B=3}
Start executing process CalculatorProcess
Start executing process AdditionProcess
[DONE]
Start executing process SubtractionProcess
[DONE]
Start executing process MultiplicationProcess
[DONE]
[DONE]
Executed service 'Calculator'
A = 5
B = 3
Output =
16
********************
Service:Calculator
Values:{Calc A=5, Calc B=3}
Start executing process CalculatorProcess
Start executing process AdditionProcess
[DONE]
Start executing process SubtractionProcess
Exception in thread "main" java.lang.Exception: Value of input parameter
'Sub B'
is not set!
at
org.mindswap.owls.grounding.impl.WSDLAtomicGroundingImpl.invoke(WSDLA
tomicGroundingImpl.java:134)
at
org.mindswap.owls.process.execution.impl.ProcessExecutionEngineImpl.e
xecuteAtomic(ProcessExecutionEngineImpl.java:117)
at
org.mindswap.owls.process.execution.impl.ProcessExecutionEngineImpl.e
xecute(ProcessExecutionEngineImpl.java:104)
at
org.mindswap.owls.process.execution.impl.ProcessExecutionEngineImpl.e
xecuteOrdered(ProcessExecutionEngineImpl.java:147)
at
org.mindswap.owls.process.execution.impl.ProcessExecutionEngineImpl.e
xecuteConstruct(ProcessExecutionEngineImpl.java:122)
at
org.mindswap.owls.process.execution.impl.ProcessExecutionEngineImpl.e
xecute(ProcessExecutionEngineImpl.java:107)
at examples.RunService2.runZipCode(RunService2.java:84)
at examples.RunService2.main(RunService2.java:101)
For these two I did not change anything.
Thanks in advance,
Daniela
Received on Friday, 24 September 2004 08:04:15 UTC