DAML-S: Sematic Markup for Web Services
Zhou Jiefeng
CS595 Nov. 25t
Outline
• Introduction
• Motivating task examples
• Upper ontology for services
• Language Specification
Introduction
• Access Web resources by content rather than by keywords
• Web resources ----services, not only the static information but allow one to effect some action or change in the real world
• DAML (DARPA Agent Markup Language) ---- A new generation of Web markup language
Introduction
• Goal: enable user to locate, select, employ, compose, and monitor Web-based services automatically
• Goal: establish a framework within which computer-interpretable description of the service are made and shared
Motivating task examples
• Automatic Web service discovery
• Automatic Web service invocastion
• Automatic Web service composition and interoperation
• Automatic Web service execution monitoring
Upper ontology for services
• Three essential types of knowledge about a service
1. What does the service require of the user, or other agents, and provide for them?
2. How does it work?3. How is it used?
Upper ontology for services
Language Specification
Profile propertyies
ServiceProfile ServiceName, TextDescription,
ContactInformation Actor
Provider, Requestor Functionality Description
Input, Output, Precondition, Effect,
Language Specification
Profile properties
Parameter Description Profile Attributes ServiceParameter QualityRating ServiceCategory
Language SpecificationModeling Services as Processes
Language Specification
Modeling Services as Processes The Process ---- describes a service in
terms of its inputs, outputs, preconditions, effects, and maybe its component subprocesses, which enable planning, composition and agent/service interoperation
The Process control model---- allow agent to monitor the execution of a service request (proposed, not defined, yet)
Language Specification
Modeling Services as Processes Process
<daml:Class rdf:ID="Process"> <rdfs:comment> The most general class of processes </rdfs:comment> <daml:disjointUnionOf rdf:parseType="daml:collection"> <daml:Class rdf:about="#AtomicProcess"/> <daml:Class rdf:about="#SimpleProcess"/> <daml:Class rdf:about="#CompositeProcess"/> </daml:disjointUnionOf> </daml:Class>
Language Specification
Modeling Services as Processes Process properties defination
<rdf:Property rdf:ID="parameter"> <rdfs:domain rdf:resource="#Process"/> <rdfs:range rdf:resource=""http://www.daml.org/2001/03/daml+oil#Thing"/> </rdf:Property> <daml:Property rdf:ID="input"> <rdfs:subPropertyOf rdf:resource="#parameter"/> <daml:range rdf:resource="http://www.daml.org/2001/03/daml+oil#Thing"/> </daml:Property>
Language Specification
Modeling Services as Processes AtomicProcess ---- directly invocable
daml:Class rdf:ID="AtomicProcess"> <daml:subClassOf rdf:resource="#Process"/> </daml:Class>
Language SpecificationModeling Services as Processes SimpleProcess ---- not invocable and not associated with
grounding, but as one step<daml:Class rdf:ID="SimpleProcess"> <daml:subClassOf rdf:resource="#Process"/> </daml:Class> <rdf:Property rdf:ID="realizedBy"> <rdfs:domain rdf:resource="#SimpleProcess"/> <rdfs:range rdf:resource="#AtomicProcess"/> <daml:inverseOf rdf:resource="#realizes"/> </rdf:Property> <rdf:Property rdf:ID="expandsTo"> <rdfs:domain rdf:resource="#SimpleProcess"/> <rdfs:range rdf:resource="#CompositeProcess"/> <daml:inverseOf rdf:resource="#collapsesTo"/> </rdf:Property>
Language Specification
Modeling Services as Processes CompositeProcess ---- decomposable into other
(noncomposite or composite) processes; their decomposition can be specified by using control constructs such as SEQUENCE and IF-THEN-ELSE<daml:Class rdf:ID="CompositeProcess"> <daml:intersectionOf rdf:parseType="daml:collection"> <daml:Class rdf:about="#Process"/> <daml:Restriction daml:cardinality="1"> <daml:onProperty rdf:resource="#composedOf"/> </daml:Restriction> </daml:intersectionOf> </daml:Class>
Language Specification
Modeling Services as Processes COMPOSITEPROCESS must have a
composedOf property using a CONTROLCONSTRUCT.
<rdf:Property rdf:ID="composedOf"> <rdfs:domain rdf:resource="#CompositeProcess"/> <rdfs:range rdf:resource="#ControlConstruct"/> </rdf:Property> <daml:Class rdf:ID="ControlConstruct"> </daml:Class>
Language SpecificationModeling Services as Processes control construct ---- associated with components to
indicate the ordering and conditional execution of the subprocesses (or control constructs) <rdf:Property rdf:ID="components"> <rdfs:comment> Holds the specific arrangement of subprocesses. </rdfs:comment> <rdfs:domain rdf:resource="#ControlConstruct"/> </rdf:Property> <daml:Class rdf:ID="ProcessComponent"> <rdfs:comment> A ProcessComponent is either a Process or a ControlConstruct. </rdfs:comment> <daml:unionOf rdf:parseType="daml:collection"> <daml:Class rdf:about="#Process"/> <daml:Class rdf:about="#ControlConstruct"/> </daml:unionOf> </daml:Class>
Language Specification
Modeling Services as Processes minimal set of control constructs
---- Sequence, Split, Split + Join, Choice, Unordered, Condition, If-Then-Else, Iterate, Repeat-While, and Repeat-Until.
Language Specification
Modeling Services as Processes
Sequence: A list of Processes to be done in order.
<daml:Class rdf:ID="Sequence"> <rdfs:subClassOf rdf:resource="#ControlConstruct"/> <rdfs:subClassOf> <daml:Restriction> <daml:onProperty rdf:resource="#components"/> <daml:toClass rdf:resource="#ProcessComponentList"/> </daml:Restriction> </rdfs:subClassOf> </daml:Class>
Language Specification
Modeling Services as Processes Split : a bag of process components to be
executed concurrently. <daml:Class rdf:ID="Split"> <rdfs:subClassOf rdf:resource="#ControlConstruct"/> <rdfs:subClassOf> <daml:Restriction> <daml:onProperty rdf:resource="#components"/> <daml:toClass rdf:resource="#ProcessComponentBag"/> </daml:Restriction> </rdfs:subClassOf> </daml:Class>
* No further specification about waiting or synchronization is made at this level.
Language Specification
Modeling Services as Processes Split+Join : Here the process consists of
concurrent execution of a bunch of process components with barrier synchronization.
* define processes that have partial synchronization
Language Specification
Modeling Services as Processes minimal set of control constructs
---- Sequence, Split, Split + Join, Choice, Unordered, Condition, If-Then-Else, Iterate, Repeat-While, and Repeat-Until.
Language Specification
Modeling Services as Processes Unordered : Allows the process components
(specified as a bag) to be executed in some unspecified order, or concurrently.
1. Let a, b, c, and d be atomic processes, and X, Y, and Z be composite processes: X = (Sequence a b) Y = (Sequence c d) Z = (Unordered A B) Z, then, translates to the following partial ordering:
2. {(a;b), (c;d)} where ';' means ``executes before'', and the possible execution sequences (total orders) include
3. {(a;b;c;d), (a;c;b;d), (a;c;d;b), (a;c;d;b), (c;d;a;b), (c;a;d;b), (c;a;b;d)}
Language Specification
Modeling Services as Processes Choice : CHOICE is a control construct with
additional properties chosen and chooseFrom. These properties can be used both for process and execution control (e.g., choose from chooseFrom and do chosen in sequence, or choose from chooseFrom and do chosen in parallel) as well for constructing new subclasses like ``choose at least n from m'', ``choose exactly n from m'', ``choose at most n from m'',and so on.
Language SpecificationModeling Services as Processes If-Then-Else : a control construct that has properties
ifCondition, then and else holding different aspects of the IF-THEN-ELSE. Its semantics is intended as ``Test
If-condition; if True do Then, if False do Else.'' <rdf:Property rdf:ID="ifCondition"> <rdfs:comment> The if
condition of an if-then-else </rdfs:comment> <rdfs:domain rdf:resource="#If-Then-Else"/> <rdfs:range> rdf:resource ="#Condition" </rdfs:range> </rdf:Property> <rdf:Property rdf:ID="then"> <rdfs:domain rdf:resource="#If-Then-Else"/> <rdfs:range rdf:resource="#ProcessComponent"/> </rdf:Property> <rdf:Property rdf:ID="else"> <rdfs:domain rdf:resource="#If-Then-Else"/> <rdfs:range rdf:resource="#ProcessComponent"/> </rdf:Property>
Language SpecificationModeling Services as Processes Iterate : ITERATE is a control construct whose
nextProcessComponent property has the same value as the current process component. REPEAT is defined as a synonym of the ITERATE class. The repeat/iterate process makes no assumption about how many iterations are made or when to initiate, terminate, or resume. The initiation, termination or maintainance condition could be specified with a whileCondition or an untilCondition as below.
Language SpecificationModeling Services as Processes Specifying Data Flow; Parameter
Bindings Process Control Ontology Time
Language SpecificationGrounding a Service to a Concrete
Realization
Language SpecificationResources
---- can, depending on resource type, be consumed, replenished, locked, and released. A resource token, or simply resource, is what is available to an activity.
Summary and Current Status Still developing, version0.9 until
May 2003 Tools available:
Web Service Composer
WSDL2DAML-S Converter
DL Mapping Tool