View
103
Download
0
Category
Preview:
Citation preview
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
Recommended