Beschreibung von Web Services im Semantic Web Seminar Parallele und Verteilte Systeme Services...

Post on 05-Apr-2015

102 views 0 download

Transcript of Beschreibung von Web Services im Semantic Web Seminar Parallele und Verteilte Systeme Services...

Beschreibung von Web Services

im Semantic Web

Seminar Parallele und Verteilte Systeme

Services Computing und Service-Oriented Architectures

Armin Stein

armin.stein@uni-muenster.de

22

Vorgehen• Motivation• Beschreibung von Elementen (RDF/S)• Ontologien (OWL)• Topic Maps (XTM)• Umfassender Ansatz (OWL-S)• Fazit• Fragen

Motivation – Beschreibung – Ontologien – Topic Maps – Umfassender Ansatz – Fazit

33

Motivation• Ziel des Semantic Web: Maschinenlesbarkeit der Inhalte• Daraus „Implizite Information“• Vision der Nutzung von Web Services:

– Automatisches Auffinden– Automatischer Aufruf– Automatische Anordnung und – Automatische Kommunikation

• Voraussetzung:– Maschinenlesbarkeit und vor allem– Maschinenverständlichkeit

Motivation – Beschreibung – Ontologien – Topic Maps – Umfassender Ansatz – Fazit

44

Beschreibung (RDF)• RDF

– Einfache Beziehung zwischen Objekten– Tripel der Art Subjekt – Prädikat – Objekt

<rdf:RDF

xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">

<rdf:Description rdf:about="http://www.w3.org/RDF/">

<dc:title>Resource Description Framework (RDF)</dc:title>

</rdf:Description>

• Verwendung: RSS (Nachrichten etc.)

RDF – RDF/SMotivation – Beschreibung – Ontologien – Topic Maps – Umfassender Ansatz – Fazit

htt

p:/

/ww

w.w

3.o

rg/R

DF

/

55

Beschreibung (RDF/S)• RDF/S

– Erweitertes Vokabular– Klassenbildung– Hierarchisierung

<rdfs:Class rdf:ID="Person">

<rdfs:comment>Personenklasse</rdfs:comment>

<rdfs:subClassOf rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Resource"/>

</rdfs:Class>

<rdfs:Class rdf:ID="Student">

<rdfs:comment>Studentenklasse</rdfs:comment>

<rdfs:subClassOf rdf:resource="#Person"/>

</rdfs:Class>

– Abfrage durch Parsen, Graphen-Erstellung…– Schön, aber: Was ist ein „Student“? Eine „Person“!… Was ist eine „Person“…? (vielleicht juristisch?)– Bereich der Wort-Domäne

RDF – RDF/SMotivation – Beschreibung – Ontologien – Topic Maps – Umfassender Ansatz – Fazit

htt

p:/

/ww

w.w

3.o

rg/R

DF

/

66

Ontologien (OWL)• Aus der Philosophie: „Sein“ als Gesprächsgegenstand• Definition von Gegenständen und Beziehungen• Datei auf dem Server, die interpretiert werden kann• OWL = Web Ontology Language.• Bildung einer Ontologie:Aus der Ontologie http://www.w3.org/TR/2004/REC-owl-guide-20040210/food:<owl:Class rdf:ID="PastaWithWhiteSauce"> <rdfs:subClassOf rdf:resource="#Pasta" /> <owl:disjointWith rdf:resource="#PastaWithRedSauce" /></owl:Class>

• Verknüpfbarkeit! • Konkrete Realisierung als Expertensystem vorhanden

http://www.ksl.stanford.edu/people/dlm/webont/wineAgent/

• Durch Verknüpfungen Verständnis über das „Sein“• Umsetzung beispielsweise als Topic Map

htt

p:/

/ww

w.w

3.o

rg/2

00

4/O

WL

/

Motivation – Beschreibung – Ontologien – Topic Maps – Umfassender Ansatz – Fazit

77

Topic Maps (XTM)• Anlehnung an Back-of-Book-Index, XmlTopicMaps• Topics

– „Dinge“, die mit einem Namen belegt werden– Aufnahme in die Map abhängig von der Präferenz des Betrachters– Können durch Klassen hierarchisiert werden– „Münster“

• Occurrences– Realisierung eines Topics– „www.muenster.de“– „www.sz.de/artikel_ueber_muenster…“– Auch Daten: „Einwohner: 280.000“

• Associations– Verbinden Topics untereinander oder Topics und Occurrences– Müssen nicht hierarchisch sein (Busverbindung)

TAO – BeispielMotivation – Beschreibung – Ontologien – Topic Maps – Umfassender Ansatz – Fazit

Rath (2003), S. 9.

htt

p:/

/ww

w.t

op

icm

ap

s.o

rg/x

tm/1

.0/

88

Topic Maps (XTM)• Warum Topic Map?

• Web Services? In Anlehnung an Rath (2003), S. 16.

TAO – BeispielMotivation – Beschreibung – Ontologien – Topic Maps – Umfassender Ansatz – Fazit

htt

p:/

/ww

w.t

op

icm

ap

s.o

rg/x

tm/1

.0/

99

Topic Maps (XTM)• Substitut für UDDI?

Motivation – Beschreibung – Ontologien – Topic Maps – Umfassender Ansatz – FazitTAO – Beispiel

1010

Konzept (OWL-S) - Übersicht• Umfassender Ansatz• W3C Member Submission 22. November 2004• Abgesehen vom Namen wohlwollend aufgenommen• Nutzung von RDF/S, OWL und WSDL• Aufteilung in vier (fünf) Dateien

– Instanziierbare Hauptklasse, verweist auf:– Service Profile– Service Process Model– Service Grounding– WSDL – Beschreibung

Übersicht – Hauptklasse – Profile – Process Model – GroundingMotivation – Beschreibung – Ontologien – Topic Maps – Umfassender Ansatz – Fazit

htt

p:/

/ww

w.w

3.o

rg/S

ub

mis

sio

n/O

WL

-S

1111

Konzept (OWL-S) - Hauptklasse• Wird instanziiert für jeden Service-Aufruf• Beispiel Fluggesellschaft „Bravo Air“

<owl:Ontology rdf:about=""><!-- Versionsinformation und Kommentar -->...

<owl:imports rdf:resource="&service;" /> <owl:imports rdf:resource="&ba_profile;" /> <owl:imports rdf:resource="&ba_process;" /></owl:Ontology>

• Profile, Process und Grounding

<service:Service rdf:ID="BravoAir_ReservationAgent"><service:presents rdf:resource="&ba_profile;#Profile_BravoAir_ReservationAgent"/><service:describedBy rdf:resource="&ba_process;#BravoAir_ReservationAgent_ProcessModel"/><service:supports rdf:resource="&ba_grounding;#Grounding_BravoAir_ReservationAgent"/></service:Service>

</rdf:RDF>

Motivation – Beschreibung – Ontologien – Topic Maps – Umfassender Ansatz – FazitÜbersicht – Hauptklasse – Profile – Process Model – Grounding

htt

p:/

/ww

w.w

3.o

rg/S

ub

mis

sio

n/O

WL

-S

1212

Konzept (OWL-S) – Profile• Informationen über das anbietende Unternehmen• Allgemeine (textuelle) Informationen über den Service• (Wie geschaffen für UDDI!)<profileHierarchy:AirlineTicketing rdf:ID="Profile_BravoAir_ReservationAgent"> <service:presentedBy rdf:resource="&ba_service;#BravoAir_ReservationAgent"/>

<profile:has_process rdf:resource="&ba_process;#BravoAir_Process"/><profile:serviceName>BravoAir_ReservationAgent</profile:serviceName><profile:textDescription>…</profile:textDescription>…

• Hier auch Qualitätseinschätzung des Services (durch den Provider)

• Einordnung in Standards (bspw. NAICS)…<profile:hasInput rdf:resource="&ba_process;#DepartureAirport_In"/>

<profile:hasOutput rdf:resource="&ba_process;#AvailableFlightItineraryList_Out"/> <profile:hasEffect rdf:resource="&ba_process;#HaveSeat"/></profileHierarchy:AirlineTicketing>

• Sorgfältige Auswahl der Informationen!

Motivation – Beschreibung – Ontologien – Topic Maps – Umfassender Ansatz – FazitÜbersicht – Hauptklasse – Profile – Process Model – Grounding

htt

p:/

/ww

w.w

3.o

rg/S

ub

mis

sio

n/O

WL

-S

1313

Konzept (OWL-S) – Process Model• Losgelöst vom Programmcode des Web Services• Eher zu betrachten als „Business Process“• atomic-, composite- und simple-Prozesse<process:CompositeProcess rdf:ID="BravoAir_Process">

<rdfs:label>This is the top level process for BravoAir</rdfs:label>

<process:composedOf>

<process:Sequence>

<process:components rdf:parseType="Collection">

<process:AtomicProcess rdf:about="#GetDesiredFlightDetails"/>

<process:AtomicProcess rdf:about="#SelectAvailableFlight"/>

<process:CompositeProcess rdf:about="#BookFlight"/>

</process:components>

</process:Sequence>

</process:composedOf>

</process:CompositeProcess>

htt

p:/

/ww

w.w

3.o

rg/S

ub

mis

sio

n/O

WL

-S

Motivation – Beschreibung – Ontologien – Topic Maps – Umfassender Ansatz – FazitÜbersicht – Hauptklasse – Profile – Process Model – Grounding

1515

Konzept (OWL-S) – Grounding• Konkrete Realisierung• Verknüpfung mit WSDL• Grounding von OWL vergleichbar mit Binding von WSDL• Benötigt WSDL-Binding

Entnommen aus http://www.daml.org/services/owl-s/1.1/overview/. Abrufdatum: 25.06.2005.

Motivation – Beschreibung – Ontologien – Topic Maps – Umfassender Ansatz – FazitÜbersicht – Hauptklasse – Profile – Process Model – Grounding

htt

p:/

/ww

w.w

3.o

rg/S

ub

mis

sio

n/O

WL

-S

1717

Fazit• Semantic Web durch Idee der Beschreibung geradezu

geschaffen für die Unterstützung von Web Services• OWL-S in Verbindung mit WSDL guter Ansatz zur

vollständigen Beschreibung eines Web Services• Nutzt vorhandene (vom W3C unterstützte) Sprachen wie

RDF, OWL und WSDL• Service Profile „UDDI-Enabled“, aber noch immer

Eintragung „von Hand“ notwendig (nicht OWL-S-Problem!)• Idee: „Web-Service-Suchmaschine“, Realisierung als Topic

Map; Vorteil: Erweiterbarkeit, Durchsuchbarkeit

• Architektur eines Web Service und alternative Beschreibung: WSMO, WSML Jan

Motivation – Beschreibung – Ontologien – Topic Maps – Umfassender Ansatz – Fazit

1818

LiteraturverzeichnisRath, Holger: The Topic Maps Handbook – White Paper. URL:

http://www.empolis.de/downloads/empolis_TopicMaps_Whitepaper20030206.pdf. 2003. – Abrufdatum: 05.07.2005.

Martin, David; Burstein, Mark; Hobbs, Jerry; Lassila, Ora; McDermott, Drew; McIlraith,Sheila; Narayanan, Srini; Paolucci, Massimo; Parsia, Bijan; Payne, Terry; Sirin, Evren; Srinivasan, Naveen; Sycara, Katia: OWL-S: Semantic Markup for Web Services. URL: http://www.daml.org/services/owl-s/1.1/overview/. 2004. – Abrufdatum: 25.06.2005.

1919

Fragen?

?

2020

Das war…

Beschreibung von Web Services

im Semantic Web

Armin Stein

armin.stein@uni-muenster.de

Vielen Dank für die Aufmerksamkeit!

21

Beispiel OWL 1/3<!DOCTYPE rdf:RDF [ <!ENTITY vin "http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#" > <!ENTITY food "http://www.w3.org/TR/2004/REC-owl-guide-20040210/food#" > ]><rdf:RDF xmlns ="&vin;"

xmlns:vin ="&vin;" xml:base ="&vin;" xmlns:food="&food;" xmlns:owl ="http://www.w3.org/2002/07/owl#" 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/2001/XMLSchema#"> ... <owl:Ontology rdf:about=""> <rdfs:comment>An example OWL ontology</rdfs:comment> <owl:imports rdf:resource="http://www.w3.org/TR/2004/REC-owl-guide-

20040210/food"/> <rdfs:label>Wine Ontology</rdfs:label> ... </owl:Ontology></rdf:RDF>

Gerüst

22

Beispiel OWL 2/3<owl:Class rdf:ID="Person" /><owl:Class rdf:ID="Mann">

<rdfs:subClassOf rdf:resource="Person" />...

</owl:Class>

<owl:Class rdf:ID="Alter" /><owl:DatatypeProperty rdf:ID="wertAlter">

<rdfs:domain rdf:resource="#Alter" /> <rdfs:range rdf:resource="&xsd;positiveInteger"/>

</owl:DatatypeProperty></owl:Class>

<owl:Class rdf:ID="Wine"> <rdfs:subClassOf rdf:resource="&food;PotableLiquid" /> ... <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#hasMaker" /> <owl:allValuesFrom rdf:resource="#Winery" /> </owl:Restriction> </rdfs:subClassOf> ...</owl:Class>

Werte-bereiche

Restrik-tionen

Klassen-definition

23

Beispiel OWL 3/3<owl:Class rdf:ID="Wine">

<owl:equivalentClass rdf:resource="&vin;Wine"/></owl:Class>

Einbindung

24

<?xml version="1.0"?><!DOCTYPE topicMap PUBLIC "-//TopicMaps.Org//DTD XML Topic Map (XTM) V1.0//EN"

"http://www.topicmaps.org/xtm/1.0/xtm1.dtd"><topicMap id="stadtfuehrer-deutschland“

xmlns:xlink="http://www.w3.org/1999/xlink">

<topic id="muenster"> <instanceOf> <topicRef xlink:href="#stadt"/> </instanceOf> <baseName> <scope><topicRef xlink:href="#german"/></scope>

<baseNameString>Münster</baseNameString> </baseName> <baseName>

<scope><topicRef xlink:href="#latin"/></scope> <baseNameString>Monasterium</baseNameString> </baseName>

</topic> <topic id="stadt">...</topic> </topicMap>

Beispiel XTMBasename, Scope

25

Beispiel XTM<topic id="muenster">

<baseName>...</baseName><occurrence>

<instanceOf><topicRef xlink:href="#artikel"/>

</instanceOf><resourceRef xlink:href="http://www.muenster.de"/>

</occurrence><occurrence>

<instanceOf><topicRef xlink:href="#einwohner"/>

</instanceOf><resourceData>280.000</resourceData>

</occurrence></topic>

Occurrence

26

Beispiel XTM

<association><instanceOf>

<topicRef xlink:href="#busverbindung"/></instanceOf><member>

<roleSpec><topicRef xlink:href="#linie"/></roleSpec><topicRef xlink:href="#8"/>

</member><member>

<roleSpec><topicRef xlink:href="#haltestelle"/></roleSpec><topicRef xlink:href="\#wolbeck"/>

</member><member>

<roleSpec><topicRef xlink:href="#haltestelle"/></roleSpec><topicRef xlink:href="#gremmendorf"/>

</member></association>

Association

27

Beispiel XTM

<association><instanceOf>

<subjectIndicatorRef xlink:href= "http://www.topicmaps.org/xtm/1.0/core.xtm#superclass-subclass"/>

</instanceOf><member>

<roleSpec><topicRef xlink:href="...#superclass"/></roleSpec><topicRef xlink:href="#ortsteil"/>

</member><member>

<roleSpec><topicRef xlink:href="...#subclass"/></roleSpec><topicRef xlink:href="#wolbeck"/>

</member></association>

Klassenbildung

28

Beispiel WSDL 1/3

<definitions name="StockQuote"...

<types><schema targetNamespace="http://example.com/stockquote.xsd"

xmlns="http://www.w3.org/2000/10/XMLSchema"> <element name="TradePriceRequest">

<complexType> <all> <element name="tickerSymbol" type="string"/> </all> </complexType> </element> <!-- element price entsprechend als Float --> </schema>

</types> <message name="GetLastTradePriceInput"> <part name="body" element="xsd1:TradePriceRequest"/> </message> <message name="GetLastTradePriceOutput"> <part name="body" element="xsd1:TradePrice"/> </message>

Elemente-Definition

29

Beispiel WSDL 2/3

<portType name="StockQuotePortType"><operation name="GetLastTradePrice">

<input message="tns:GetLastTradePriceInput"/> <output message="tns:GetLastTradePriceOutput"/> </operation></portType><binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType">

<soap:binding style="document„ transport="http://schemas.xmlsoap.org/soap/http"/>

<operation name="GetLastTradePrice"> <soap:operation

soapAction="http://example.com/GetLastTradePrice"/> <input><soap:body use="literal"/></input> <output><soap:body use="literal"/></output> </operation></binding>

Binding von Input/Output an soap

30

Beispiel WSDL 3/3

<service name="StockQuoteService"><documentation>My first service</documentation><port name="StockQuotePort" binding="tns:StockQuoteBinding">

<soap:address location="http://example.com/stockquote"/> </port>

</service></definitions>

31

Beispiel OWL-S (Hauptdatei)<?xml version='1.0' encoding='ISO-8859-1'?><!DOCTYPE uridef[

<!-- Definition des Vokabulars (RDF, RDFS, XML, XMS, OWL) -->]>

<rdf:RDF...<!-- Definition der Namespaces -->...>

<owl:Ontology rdf:about="">...<!-- Versionsinformation und Kommentar -->...<owl:imports rdf:resource="&service;" /><owl:imports rdf:resource="&ba_profile;" />

<owl:imports rdf:resource="&ba_process;" /></owl:Ontology>

<service:Service rdf:ID="BravoAir_ReservationAgent"><service:presents rdf:resource="&ba_profile;#Profile_BravoAir_ReservationAgent"/>

<service:describedBy rdf:resource="&ba_process;#BravoAir_ReservationAgent_ProcessModel"/>

<service:supports rdf:resource="&ba_grounding;#Grounding_BravoAir_ReservationAgent"/>

</service:Service>

</rdf:RDF>

Service-Beschreibung

32

Beispiel OWL-S (Profile 1/2)

<profileHierarchy:AirlineTicketing rdf:ID="Profile_BravoAir_ReservationAgent"><service:presentedBy rdf:resource="&ba_service;#BravoAir_ReservationAgent"/>

<profile:has_process rdf:resource="&ba_process;#BravoAir_Process"/> <profile:serviceName>BravoAir_ReservationAgent</profile:serviceName> <profile:textDescription> This service provides flight reservations based on the specification... </profile:textDescription>

<profile:contactInformation><actor:Actor rdf:ID="BravoAir-reservation">

<actor:name>BravoAir Reservation department</actor:name> <!--...actor,phone,fax,email,physicalAddress,webURL etc. -->

</actor:Actor> </profile:contactInformation>

<profile:contactInformation><actor:Actor rdf:ID="BravoAir-information">

<!--möglicher weiterer Kontakt --></actor:Actor>

</profile:contactInformation>

Profil-Beschreibung

33

Beispiel OWL-S (Profile 2/2)

<profile:serviceParameter>

<addParam:GeographicRadius rdf:ID="BravoAir-geographicRadius">

<profile:serviceParameterName>

BravoAir Geographic Radius

</profile:serviceParameterName>

<profile:sParameter rdf:resource="&country;#UnitedStates"/>

</addParam:GeographicRadius>

</profile:serviceParameter>

<!-- Weitere Spezifikationen wie Qualitäts-Einschätzung oder -->

<!-- Einordnung in unterschiedliche Kategorien wie NAICS oder UNSPSC -->

<!-- Beschreibung von Input/Output/Prä-/Posteffekten -->

<profile:hasInput rdf:resource="&ba_process;#DepartureAirport_In"/>

<profile:hasOutput rdf:resource="&ba_process;#AvailableFlightItineraryList_Out"/>

<profile:hasEffect rdf:resource="&ba_process;#HaveSeat"/>

</profileHierarchy:AirlineTicketing>

Parameter-Definition

34

Beispiel OWL-S (Process Model 1/2)

<process:CompositeProcess rdf:ID="BravoAir_Process"><rdfs:label>This is the top level process for BravoAir</rdfs:label>

<process:composedOf> <process:Sequence> <process:components rdf:parseType="Collection"> <process:AtomicProcess

rdf:about="#GetDesiredFlightDetails"/> <process:AtomicProcess

rdf:about="#SelectAvailableFlight"/> <process:CompositeProcess

rdf:about="#BookFlight"/></process:components>

</process:Sequence></process:composedOf>

</process:CompositeProcess>

Prozess-Definition

35

Beispiel OWL-S (Process Model 2/2)

<process:AtomicProcess rdf:ID="SelectAvailableFlight"><process:hasInput rdf:resource="#PreferredFlightItinerary_In"/><process:hasOutput rdf:resource="#AvailableFlightItineraryList_Out"/>

</process:AtomicProcess><process:Input rdf:ID="PreferredFlightItinerary_In">

<process:parameterType rdf:resource="&concepts;#FlightItinerary"/></process:Input><process:UnConditionalOutput rdf:ID="AvailableFlightItineraryList_Out">

<process:parameterType rdf:resource="&concepts;#FlightItineraryList"/></process:UnConditionalOutput>

Prozess-Eingabe/Ausgabe

36

Beispiel OWL-S (Grounding 1/4)

<message name="SelectAvailableFlight_Input"><part name="preferredFlightItinerary" owl-s-

parameter="BravoAir:#preferredFlightItinerary_In"/></message>

<portType name="SelectAvailableFlight_PortType"><operation name="SelectAvailableFlight_operation" owl-s-

process="BravoAir:#SelectAvailableFlight"><input message="tns:SelectAvailableFlight_Input"/>

<output message="tns:SelectAvailableFlight_Output"/> </operation></portType>

Parameter <-> Message:

37

Beispiel OWL-S (Grounding 2/4)

<grounding:WsdlGrounding rdf:ID="Grounding_BravoAir_ReservationAgent"><service:supportedBy rdf:resource="&ba_service;#BravoAir_ReservationAgent"/><!-- Mehrere Groundings für atomare Prozesse, im Speziellen: -->

<grounding:hasAtomicProcessGrounding rdf:resource="#WsdlGrounding_SelectAvailableFlight"/>

</grounding:WsdlGrounding>

Prozesse: OWL-S <-> WSDL

38

Beispiel OWL-S (Grounding 3/4)

<grounding:WsdlAtomicProcessGrounding rdf:ID="WsdlGrounding_SelectAvailableFlight"><grounding:owlsProcess rdf:resource="&ba_process;#SelectAvailableFlight"/><grounding:wsdlOperation rdf:resource="#SelectAvailableFlight_operation"/><grounding:wsdlInputMessage>

<xsd:anyURI rdf:value= "&BravoAirGroundingWSDL;#SelectAvailableFlight_Input"/>

</grounding:wsdlInputMessage> <grounding:wsdlInputs rdf:parseType="Collection"> <grounding:WsdlInputMessageMap> <grounding:owlsParameter rdf:resource=

"&ba_process;#preferredFlightItinerary_In"/><grounding:wsdlMessagePart>

<xsd:anyURI rdf:value="&BravoAirGroundingWSDL; #preferredFlightItinerary"/>

</grounding:wsdlMessagePart></grounding:WsdlInputMessageMap>

</grounding:wsdlInputs>

Prozess <-> OperationInput <-> Message

39

Beispiel OWL-S (Grounding 4/4)

<grounding:wsdlOutputs rdf:parseType="Collection"> <grounding:WsdlOutputMessageMap> <grounding:owlsParameter rdf:resource="&ba_process;

#availableFlightItineraryList_Out"/> <grounding:wsdlMessagePart> <xsd:anyURI rdf:value="&BravoAirGroundingWSDL;

#availableFlightItineraryList"/> </grounding:wsdlMessagePart> </grounding:WsdlOutputMessageMap> </grounding:wsdlOutputs>

<grounding:wsdlReference> <xsd:anyURI rdf:value=

"http://www.w3.org/TR/2001/NOTE-wsdl-20010315"/></grounding:wsdlReference>

</grounding:WsdlAtomicProcessGrounding>

Output <-> Message