Beschreibung von Web Services im Semantic Web Seminar Parallele und Verteilte Systeme Services...
-
Upload
kerstin-schlangen -
Category
Documents
-
view
102 -
download
0
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
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
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