インターネット上で、ソフトウェアの機能を利用する仕組み:
Discovery の手段:
SOAPのメッセージのパターンを定義する:
Request の段階:
Response の段階:
違いの一例:
<p xml:lang="en">The quick brown fox jumps over the lazy dog.</p> <p xml:lang="en-GB">What colour is it?</p> <p xml:lang="en-US">What color is it?</p>
en-US en-GB
現在ではロケールを送信する手段がない
Accept-Language: zh-cn, fr-ch;q=0.8, fr;q=0.7
ロケールとの関係はデーターの種類による
データー 例 ---------------- --------------------------- date : 2003-05-31 time : 13:20:00 dateTime : 2003-05-31T13:20:00+09:00 double : 1267.43233E12 integer : 2678967543233
データー 例 ---------------- --------------------------- duration : P1Y2M3D gYearMonth : 2003-05 gYear : 2003 gMonthDay : 05-25 gDay : 25 gMonth : 05
<definitions targetNamespace="http://example.com/example" xmlns:ns1="http://example.com/example"> <interface name="ns1:Thing"> <!-- All implementations of this interface must be locale-aware --> <feature uri="http://www.w3.org/2005/09/ws-i18n" required="true"/> <operation name="someOperation"> <!-- This operation uses the $user policy --> <property uri="http://www.w3.org/2005/09/ws-i18n" required="true"> <constraint xmlns:locale="http://www.w3.org/2005/09/ws-i18n"> locale:$user </constraint> </property> ... </operation> ... <operation name="anotherOperation"> <!-- This operation uses a specific locale --> <property uri="http://www.example.com/International/ws/i18n" required="true"> <value>fr-FR</value> <!-- French for France Locale --> </property> ... </operation> </interface> </definitions>
<i18n:international> <i18n:locale>en-US</i18n:locale> <i18n:preferences> <ldml:collation> <ldml:alias source="de_DE" type="phonebook"/> </ldml:collation> </i18n:preferences> </i18n:international>
<tz>GMT-0300</tz> <tz>America/Los_Angeles</tz>
<i18n:preferences> <ldml:measurementSystem type="metric" /> </i18n:preferences> <i18n:preferences> <ldml:alias source="de_DE" /> </i18n:preferences>
現在のWeb サービスの問題点「意味定義」ができない:
Web サービスの「意味」を定義できる標準
WSMOが提供する意味の要素:
namespace {_"http://example.org/tripReservationOntology#", dc _"http://purl.org/dc/elements/1.1#", loc _"http://example.org/locationOntology#", po _"http://example.org/purchaseOntology#", foaf _"http://xmlns.com/foaf/0.1/", wsml _"http://www.wsmo.org/wsml/wsml-syntax#", prs _"http://example.org/owlPersonMediator#"} ontology _"http://example.org/tripReservationOntology" nonFunctionalProperties dc#title hasValue "Trip Reservation Ontology" dc#identifier hasValue _"http://example.org/tripReservationOntology" dc#creator hasValue _"http://example.org/foaf#deri" dc#description hasValue "an ontology for describing trip reservations related knowledge" dc#publisher hasValue _"http://example.org/foaf#deri" dc#contributor hasValue _"http://example.org/foaf#cristina" dc#date hasValue _date(2004,12,16) dc#format hasValue "text/x-wsml" dc#language hasValue "en-us" dc#rights hasValue _"http://deri.at/privacy.html" wsml#version hasValue "$Revision 1.17 $" endNonFunctionalProperties importsOntology { _"http://example.org/locationOntology", _"http://example.org/purchaseOntology"} usesMediator _"http://example.org/owlPersonMediator"
concept trip origin impliesType loc#location destination impliesType loc#location departure ofType _date arrival ofType _date concept tripFromAustria subConceptOf trip nonFunctionalProperties dc#relation hasValue tripFromAustriaDef endNonFunctionalProperties axiom tripFromAustriaDef definedBy forall {?x ,?origin} (?x memberOf tripFromAustria implies ?x[ origin hasValue ?origin] and ?origin[ loc#locatedIn hasValue loc#austria] ). concept ticket provider ofType _string trip ofType trip recordLocatorNumber ofType _integer concept reservationRequest nonFunctionalProperties dc#description hasValue "This concept represents a reservation request for some trip for a particular person" endNonFunctionalProperties reservationItem impliesType wsml#true reservationHolder impliesType prs#person concept reservation nonFunctionalProperties dc#description hasValue "concept of a confirmation for some item" endNonFunctionalProperties reservationItem impliesType wsml#true reservationHolder impliesType prs#person
namespace { _"http://example.org/purchaseOntology#", dc _"http://purl.org/dc/elements/1.1", wsml _"http://www.wsmo.org/wsml/wsml-syntax#", prs _"http://example.org/owlPersonMediator.wsml#"} ontology _"http://example.org/purchaseOntology" concept creditCard owner impliesType prs#person number ofType _integer type ofType _string expiryDate ofType _date balance ofType _integer relation validCreditCard(ofType creditCard) nonFunctionalProperties dc#description hasValue "Relation that holds for a valid credit card" dc#relation hasValue ValidCreditCardDef endNonFunctionalProperties axiom ValidCreditCardDef definedBy forall {?x, ?y} ( validCreditCard(?x) impliedBy ?x[expiryDate hasValue ?y] memberOf creditCard and neg (wsml#dateLessThan(?y, wsml#currentDate()))).
instance tripInnVen memberOf trip origin hasValue loc#innsbruck destination hasValue loc#venice departure hasValue _date(2005,11,22) arrival hasValue _date(2005,11,22) instance ticketInnVen memberOf ticket provider hasValue "Book Ticket Service" trip hasValue tripInnVen recordLocatorNumber hasValue 93 relationInstance ticketPrice(ticketInnVen, po#euro, 120)
WSMO と SWSFの比較:
travel(?Destination, ?Account) { IfThenElse if greater(budget_balance(?Account),1000) then occurrence ?occ1 book_deluxe(?Destination) if greater(1001,budget_balance(?Account)) then occurrence ?occ2 book_economy(?Destination) }
prefix xsd = "http://www.w3.org/2001/XMLSchema". Service[ name *=> xsd#string, author *=> xsd#string, contactInformation *=> xsd#string, contributor *=> xsd#string, description *=> xsd#string, url *=> xsd#string, identifier *=> xsd#string, version *=> xsd#string, releaseDate *=> xsd#date, language *=> xsd#string, subject *=> xsd#string, trust *=> xsd#string, reliability *=> xsd#string, cost *=> xsd#string ].
USA::America. Germany::Europe. Austria::Europe. France::Europe. Tyrol::Austria. NewYorkState::USA. StonyBrook:NewYorkState. NewYork:NewYorkState. Innsbruck:Tyrol. Lienz:Tyrol. Vienna:Austria. Bonn:Germany. Frankfurt:Germany. Paris:France. Nancy:France. Europe:Region. America:Region. ?Reg:Region :- ?Reg1:Region and ?Reg::?Reg1. ?Loc:Location :- ?Reg:Region and ?Loc:?Reg.
searchTrip(?From,?To):TravelSearchQuery :- ?From:(Region or Location) and ?To:(Region or Location). searchCitipass(?Loc):TravelSearchQuery :- ?Loc:(Region or Location).
// Service input search(?requestId,?fromLocation,?toLocation):ProcessInput :- ?requestId:Request and ?fromLocation:Location and ?toLocation:Location. search(?requestId,?city):ProcessInput :- ?requestId:Request and ?city:Location. // Service output ItineraryInfo::ServiceOutput. PassInfo::ServiceOutput. ItineraryInfo[from*=>Location, to*=>Location]. PassInfo[city*=>Location]. itinerary(?reqNumber):ItineraryInfo :- ?reqNumber:Request. pass(?reqNumber):PassInfo :- ?reqNumber:Request.