getStockQuote (string symbol)
does. Resource
s are available out in the net.Service
as the
central class for describing interfaces, part of the OWL-S Service
Ontology [3]. ServiceProfile
. An
agent uses it to determine whether the service meets it's needs.
ServiceModel
. Gives details. Service
Grounding
. It tells how to access the service. AtomicProcess
is directly invocable, has not
sub-processes, and executed in a single step.SimpleProcess
is not invocable (not
associated with a grounding). Its executed in a single
step. Used as an element of abstraction. CompositeProcess
is decomposable into other
process using control constructs. It is composedOf
a ControlConstruct
which, in turn, has a
components
property that indicates the ordering and
conditional execution of the sub-processes. Sequence
is a list of Processes
to be done in order. Split
contains a bag of process components to
be executed concurrently. Unordered
specifies a bag of process components
that can be executed in any order. Split+Join
consists of concurrent execution of
process components with barrier synchronization. Choice
has further properties
chosen
and chooseFrom
which let you
create customized subsets. If-Then-Else
class has properties
ifCondition
, then
, and
else
, which implement the statement. Iterate
does just that until the
whileCondition
or untilCondition
are
met. Instants
and
Intervals
. start-of
end-of
inside
Resource
s have an AllocationType
property which can be used to tell if the resource is consumable
(e.g., time) or reusable (e.g., paint). Process
.LocateBook
service is atomic, so we declare it as such:
<process:AtomicProcess rdf:ID="LocateBook"> <process:hasInput> <process:Input rdf:ID="BookName"> <process:parameterType rdf:resource="&xsd;#string"/> </process:Input> </process:hasInput> <process:hasOutput> <process:ConditionalOutput rdf:ID="LocateBookOutput"> <process:coCondition rdf:resource="#InCatalogueBookInstance"/> <process:parameterType rdf:resource="LocatedBookOutput"/> </process:ConditionalOutput> </process:hasOutput> </process:AtomicProcess>
LocateBook
takes as input a BookName, which is a string#InCatalogueBookInstance
then return
LocatedBookOutput
.precondition
and
effect
(yes, like AI planner operators. 1970's
AI research might yet find an application :-).ExpressCongoBuy
service has two preconditions:
you must have an account and credit:
<process:AtomicProcess rdf:ID="ExpressCongoBuy"> <process:hasInput> <process:Input rdf:ID="ExpressCongoBuyBookISBN"> <process:parameterType rdf:resource="&xsd;#string"/> </process:Input> </process:hasInput> <process:hasInput> <process:Input rdf:ID="CongoBuySignInInfo"> <process:parameterType rdf:resource="#SignInData"/> </process:Input> </process:hasInput> <process:hasPrecondition rdf:resource="#AcctExists"/> <process:hasPrecondition rdf:resource="#CreditExists"/> <process:hasEffect> <process:ConditionalEffect rdf:ID="CongoOrderShippedEffect"> <process:ceCondition rdf:resource="#BookInStock"/> <process:ceEffect rdf:resource="#OrderShippedEffect"/> </process:ConditionalEffect> </process:hasEffect> <process:hasOutput> <process:ConditionalOutput rdf:ID="CongoOrderShippedOutput"> <process:coCondition rdf:resource="#BookInStock"/> <process:parameterType rdf:resource="#OrderShippedOutput"/> </process:ConditionalOutput> </process:hasOutput> <process:hasOutput> <process:ConditionalOutput rdf:ID="CongoOutOfStockOutput"> <process:coCondition rdf:resource="#BookOutOfStock"/> <process:parameterType rdf:resource="#BookOutOfStockOutput"/> </process:ConditionalOutput> </process:hasOutput> </process:AtomicProcess>
CompositeProcess
is composedOf
a bunch of ControlConstruct
s which can be things
like sequence
, if-then-else
,
fork
, while
, etc.FullCongoBuy
has two steps: locating the book and
then buying the book. <process:CompositeProcess rdf:ID="FullCongoBuy"> <process:composedOf> <process:Sequence> <process:components rdf:parseType="Collection"> <process:AtomicProcess rdf:about="#LocateBook"/> <process:CompositeProcess rdf:about="#CongoBuyBook"/> </process:components> </process:Sequence> </process:composedOf> <!-- All of the inputs and outputs of this composite process are derived from the corresponding inputs and outputs of its atomic processes and will normally be computed automatically by OWL-S tools. --> <process:hasInput> <process:Input rdf:ID="FullCongoBuyBookName"> <process:parameterType rdf:resource="&xsd;#string"/> </process:Input> </process:hasInput> <process:hasInput> <process:Input rdf:ID="FullCongoBuySignInInfo"> <process:parameterType rdf:resource="#SignInData"/> </process:Input> </process:hasInput> <process:hasInput> <process:Input rdf:ID="FullCongoBuyCreateAcctInfo"> <process:parameterType rdf:resource="#AcctInfo"/> </process:Input> </process:hasInput> <process:hasInput> <process:Input rdf:ID="FullCongoBuyCreditCardNumber"> <process:parameterType rdf:resource="&xsd;#decimal"/> </process:Input> </process:hasInput> <process:hasInput> <process:Input rdf:ID="FullCongoBuyCreditCardType"> <process:parameterType rdf:resource="#CreditCardType"/> </process:Input> </process:hasInput> <process:hasInput> <process:Input rdf:ID="FullCongoBuyCreditCardExpirationDate"> <process:parameterType rdf:resource="&xsd;#string"/> </process:Input> </process:hasInput> <process:hasInput> <process:Input rdf:ID="FullCongoBuyCreditCardDeliveryAddress"> <process:parameterType rdf:resource="&xsd;#string"/> </process:Input> </process:hasInput> <process:hasInput> <process:Input rdf:ID="FullCongoBuyPackagingSelection"> <process:parameterType rdf:resource="&xsd;#string"/> </process:Input> </process:hasInput> <process:hasInput> <process:Input rdf:ID="FullCongoBuyDeliveryTypeSelection"> <process:parameterType rdf:resource="#DeliveryType"/> </process:Input> </process:hasInput> <process:hasOutput> <process:ConditionalOutput rdf:ID="FullCongoBuyBookISBNOutput"> <process:coCondition rdf:resource="#InCatalogueBookInstance"/> <process:parameterType rdf:resource="&xsd;#string"/> </process:ConditionalOutput> </process:hasOutput> <process:hasOutput> <process:UnConditionalOutput rdf:ID="FullCongoBuyCreateAcctOutput"> <process:parameterType rdf:resource="#CreateAcctOutputType"/> </process:UnConditionalOutput> </process:hasOutput> </process:CompositeProcess> <!-- End of Full Congo Buy -->
This talk available at http://jmvidal.cse.sc.edu/talks/owls/
Copyright © 2009 José M. Vidal
.
All rights reserved.
03 April 2004, 04:06PM