• Keine Ergebnisse gefunden

ATSM shares a high similarity with the WSDL component model (cp. Section 2.1). An overview of the ATSM component model is provided in Figure A.2. A service description in ATSM can essentially be interpreted as a tree: Each service component may contain 0 or more interfaces, which each subsume 0 or moreoperations. Each operation links to 0 or moremessageReferences, which in turn are composed by 0 or moreparameters. Message reference, in this context, is a generic term forinputs andoutputs. Furthermore, we considerconditions(i.e., preconditions and effects) for each operation.

However, conditions should be primarily recognized as a placeholder, as the format of preconditions and effects has not been definitely defined regarding SAWSDL and OWL-S.

Apart from conditions, each component has a set of attributes. Regarding parameters, this includes the component’s name (generally encoded as qualified name), a set of URIs that point to associated semantic concepts, a URI describing its syntactic type, and a set of URIs pointing to lifting or lowering schema mappings for automatic mediation between concrete data and ontological concepts.

The choice of attributes is based on the following assumptions: Semantic annotations (or references) provide the most precise source of information in matchmaking, e.g., in traditional, logic-based sub-sumption reasoning. If they are not available, component names allow to derive textual similarity using standard methods from IR. Syntactic information (for instance, the data type) is of importance on the level of inputs and outputs and can be used in automatic mediation between services.

To allow for the representation of existing services in ATSM, we have devised a mapping that defines correspondencies between components and their attributes in SAWSDL and OWL-S service descriptions and an ATSM document (cp. Figure A.2). Because of the high similarity between the WSDL and ATSM component models, the mapping from WSDL interface, operation, input, and output components can be conducted to the respective equivalents in ATSM in a straightforward manner. ThemodelReference attribute has been renamed to semanticReference, assuming that annotations correspond to some se-mantic concept in an ontology.

XSD elements are mapped onto ATSMparameter components. An ATSM parameter holds both se-mantic and syntactic information, as well as the schema mappings that may be defined using SAWSDL annotations. The structure of the XSD definition is eliminated in the mapping by generating a “flat”

parameter structure: sequenceandcomplexTypeelements are recursively resolved in a top-down man-ner, resulting in a set of ATSMparameters. In detail, the mapping process works as follows: If an XSD element does not specify a type, the underlying structure – commonly a sequence – is further evalu-ated. For each contained XSD element, the process is recursively repeevalu-ated. If an element refers to a simpleTypeorcomplexType, the type is transformed into an ATSMparametercomponent. Additionally, for acomplexType, the structure is broken down and recursively processed as previously outlined. The process continues up to a specified recursive depth or until a loop is detected.

The process is illustrated along the lines of the schema definition contained in the surfing-organization_destination_service.wsdl file from SAWSDL-TC (cp. Listing A.2); an excerpt of the resulting ATSM document is depicted in Listing A.4. The only operation in the service,get_DESTINATION, specifies the element get_DESTINATIONRequest as input. This element consists of a sequence, con-taining the element _ORGANIZATION (the second element, _SURFING, is omitted for the purpose of simplicity), which points to the type OrganizationType. It constitutes the first parameter in the ATSM document. OrganizationType is again composed by a number of elements in a sequence.

The elements has-sub-unit and has-size point to simple types, which in turn each result in an ATSM parameter (namely, Organization-Unit andOrganizationOrganization-Size). The element organization-part-ofpoints toOrganizationTypeand thus constitutes a loop, which results in the re-cursive process terminating at this point. Yet,OrganizationTypeis added as parameter once again. The elementsaffiliated-personandheaded-by, however, point to the complex typeAffiliated-Person, resulting in two additional ATSM parameters. Again, Affiliated-Personis recursively processed. Its only element,has-affiliation, points to the complex typeOrganizationType. Thus, two more param-eters are generated. Afterwards, the process terminates due to a loop being detected.

Overall, the following ATSM parameters are generated (the number in braces specifies the respective recursive depth in the generation process):

• OrganizationType (1)

• Organization-Unit (2)

• OrganizationType (2)

• Affiliated-Person (2)

• OrganizationType (3)

• Affiliated-Person (2)

• OrganizationType (3)

• OrganizationOrganization-Size (2)

In the case of OWL-S, a comparable process is followed. Each concept that is defined by aparameterType in OWL-S is recursively resolved and directly results in an ATSM parameter. Then, all applicable object properties are determined for that concept, and each concept in the property’s range is traversed, again leading to additional parameters. The process continues up to a specified recursive depth or until no more properties are applicable to a concept.

Listing A.4:Example ATSM Document (Excerpt)

1

@prefix tns: < http: // dmas . dfki . de / axis / services / SurfingorganizationDestination # > .

2

@prefix atsm: < http: // kom .tu - darmstadt . de / ns / atsm # > .

3 4

< tns:atsm . service ( surfingorganization_destination_service ) >

5

a atsm:Service ;

6 atsm:hasInterface < tns:atsm . interface ( surfingorganization_destination_service /

SurfingorganizationDestinationSoap ) > ;

7 atsm:hasName " surfingorganization_destination_service " .

8 9

< tns:atsm . interface ( surfingorganization_destination_service / SurfingorganizationDestinationSoap ) >

10

a atsm:Interface ;

11 atsm:hasOperation < tns:atsm . operation ( surfingorganization_destination_service /

SurfingorganizationDestinationSoap / get_DESTINATION ) > .

12 13

< tns:atsm . operation ( surfingorganization_destination_service / SurfingorganizationDestinationSoap / get_DESTINATION ) >

14

a atsm:Operation ;

15 atsm:hasInput < tns:atsm . messageReference ( surfingorganization_destination_service /

SurfingorganizationDestinationSoap / get_DESTINATION / In ) > ;

16 atsm:hasName "{ http: // dmas . dfki . de / axis / services / SurfingorganizationDestination } get_DESTINATION " ;

17 atsm:hasOutput < tns:atsm . messageReference ( surfingorganization_destination_service /

SurfingorganizationDestinationSoap / get_DESTINATION / Out ) > ;

18 atsm:hasPattern < http: // www . w3 . org / ns / wsdl /in - out > .

19 20

< tns:atsm . messageReference ( surfingorganization_destination_service / SurfingorganizationDestinationSoap / get_DESTINATION / In ) >

21 a atsm:MessageReference ;

22 atsm:hasName " In " ;

23 atsm:hasParameter < tns:atsm . parameter ( surfingorganization_destination_service /

SurfingorganizationDestinationSoap / get_DESTINATION / In / OrganizationType ) > [..] .

24 25

< tns:atsm . messageReference ( surfingorganization_destination_service / SurfingorganizationDestinationSoap / get_DESTINATION / Out ) >

26 a atsm:MessageReference ;

27 atsm:hasName " Out " ;

28 atsm:hasParameter < tns:atsm . parameter ( surfingorganization_destination_service /

SurfingorganizationDestinationSoap / get_DESTINATION / Out / DestinationType ) > .

29 30

< tns:atsm . parameter ( surfingorganization_destination_service / SurfingorganizationDestinationSoap / get_DESTINATION / In / OrganizationType ) >

31

a atsm:Parameter ;

32 atsm:hasName "{ http: // dmas . dfki . de / axis / services / SurfingorganizationDestination } OrganizationType " ;

33 atsm:hasSemanticReference

34

< http: //127.0.0.1/ ontology / portal . owl # Organization > .

35 36

< tns:atsm . parameter ( surfingorganization_destination_service / SurfingorganizationDestinationSoap / get_DESTINATION / Out / DestinationType ) >

37

a atsm:Parameter ;

38 atsm:hasName "{ http: // dmas . dfki . de / axis / services / SurfingorganizationDestination } DestinationType " ;

39 atsm:hasSemanticReference

40

< http: //127.0.0.1/ ontology / travel . owl # Destination > ;

41 atsm:hasSyntacticType

42

"{ http: // www . w3 . org /2001/ XMLSchema } string " .

43 44 [..]