• Ei tuloksia

Keskustelunsuunnittelu ja dialogisäännöt

In document PDF www.ling.helsinki.fi (sivua 58-64)

Keskustelunsuunnittelumallintaamahdollisiakeskusteluntilanteitakohdan3.6periaat-

teidenmukaisesti. Sekäyttää hyväkseendialogisääntöjä,jotkaonohjelmoitu seuraavan

(R1)--+--rdf:type---> dm:DRule

+--dm:preond---> (PreC1)

+--dm:postond--> (PostC1)

+--dm:ation----> (At1)

+--dm:penalty---> <n>

'--dm:isgoal----> true|false

Dialoginhallinnansisäinenkeskustelunsuunnittelutoteuttaaevaluointimetodin,jokalas-

keedialogisääntöjenlausekkeidenkuvaamiafunktioidenarvoja.FunktiotkoostuvatRDF-

resursseista, jotka kukin kuvaavat jotain alkeisoperaatiota. Operaatioiden argumentit

voivatollajokoarvoja (lukujataimerkkijonoja) sinänsätaiviittauksiatoisiin funktioi-

hin.Argumentit osoitetaanoperaatioresurssin RDF-ominaisuuksina allaolevan esimer-

kin mukaisesti.

F1 = equals(F2, 2)

(F1)--+--rdf:type--> dm:Eq

+--dm:arg1---> ''2''

'--dm:arg2---> (F2)

Sääntöfunktioiden syntaksi

Loogiset operaatiot

dm:And (dm:arg1, dm:arg2)

dm:Or (dm:arg1, dm:arg2)

dm:Not (dm:arg1)

Loogisten operaatioiden paluuarvo on joko merkkijono true kunoperaation tulos on

tosi tai tyhjä merkkijono kun operaation tulos on epätosi. Argumentit, joiden arvot

ovat tyhjiä merkkijonoja,tulkitaan epätosiksi.Muut argumentit tulkitaan tosiksi.

Aritmeettiset operaatiot

dm:Add (dm:arg1, dm:arg2)

dm:Sub (dm:arg1, dm:arg2)

dm:Mul (dm:arg1, dm:arg2)

dm:Div (dm:arg1, dm:arg2)

dm:Mod (dm:arg1, dm:arg2)

Aritmeettisten operaatioiden argumentit oletetaan kokonaislukuja kuvaaviksi merkki-

jonoiksi.Tulokset ovat merkkijonoja,jotkakuvaavat yhteenlasku-, erotus-,tulo-,jako-,

merkkijonon paluuarvoksi.

Vertailuoperaatiot

dm:Eq (dm:arg1, dm:arg2)

dm:Gt (dm:arg1, dm:arg2)

dm:Lt (dm:arg1, dm:arg2)

Vertailuoperaatioiden suurempi kuin (Gt) ja pienempi kuin (Lt) argumentit oletetaan

kokonaislukuja kuvaaviksi merkkijonoiksi. Operaatiot palauttavat merkkijonon true

kun vertailun tulos on tosi. Yhtä suuri kuin -operaatio (Eq) vertailee mitä tahansa

merkkijonoja keskenään. Se palauttaa merkkijonon true mikäli merkkijonot ovat sa-

mat. Muuten operaatiotpalauttavat tyhjänmerkkijonon.

Muuttujaoperaatiot

$ x

Tämälausekepalauttaax-nimiseen muuttujaantallennetun arvon.Mikäliarvoaeiole

talletettu, palautuu tyhjämerkkijono.

dm:Let (dm:key, dm:val)

Operaatio Let asettaakey-argumentinnimeämään muuttujaan val-lausekkeen arvon.

Dialogioperaatiot

dm:Exists(dm:key, dm:ontoClass, dm:sothat)

On olemassa -kvanttori(Exists,9)iteroikeskustelumuistinmallinnetusta tilastaon-

toClass-argumentin osoittamaan luokkaan kuuluvia referenttejä. Se asettaa referentin

URI-tunnisteenkey-argumentin osoittamaanmuuttujaan ja evaluoi sothat-argumentin

lausekkeen. Mikäli lausekkeen arvo ei ole tyhjä merkkijono, keskeytetään iterointi ja

palautetaan arvo tuloksena. Mikäli ei-tyhjää merkkijonoa ei saada lausekkeen arvok-

si millään kvanttorin referentin sidonnalla, palautuu kvanttorilausekkeen arvona tyhjä

merkkijono.

dm:Forall(dm:key, dm:ontoClass, dm:sothat)

Kaikilla-kvanttori(Forall,8)vastaatoiminnaltaanedellämainittua9-kvanttorianiin,

ettäsevuorotellen sijoittaakaikki ontoClass-argumentinmäärittämän ontologialuokan

instanssireferentit keskustelumuististakey-argumentin osoittamaan muuttujaanja tes-

tuksella testilauseke palauttaa tyhjän merkkijonon, palauttaa myös kvanttori tyhjän

merkkijonon jalopettaa iteroinnin tämän referentin kohdalle.

Mikäli iteroitavia referenttejä eiolekeskustelumuistissa, palauttaa kvanttorimerkkijo-

non true. Muutoin kvanttori palauttaa viimeisen iteraatiokierroksen testilausekkeen

arvon.

dm:SetRefVar (dm:ref, dm:key, dm:val)

dm:RefVar (dm:ref, dm:key)

SetRefVar asettaa ref:n osoittaman referentin key-muuttujan arvoksi argumentin val

arvon.Vastaavasti RefVar palauttaa referentinkysytynmuuttujan arvon.

dm:FRQuery (...)

FRQuery-operaatio muodostaa keskustelumuistin tilasta taustasovelluskyselyn kehyk-

senjalähettääfatsreasoner-komponentille.Operaatiovoisaadavalinnaisiaargument-

tejariippuenkutsuttavista taustasovelluksista.

Esimerkkisääntö

TälläsääntöformalismillamuodostettuRDF-pohjainendialogisääntö,jokaesitettiinkoh-

dassa3.6,onesitettyseuraavassalistauksessaN-TRIPLE-RDF-muodossa.Samasääntö

on esitettyTripled-editorissa editoitavana RDF-graana kuvassa18.

<dm:Rule1> <rdf:type> <dm:DRule> .

<dm:Rule1> <dm:preond> <dm:PrC> .

<dm:Rule1> <dm:postond> <dm:PoC> .

<dm:Rule1> <dm:ation> <dm:At> .

<dm:Rule1> <dm:des> "Disambiguate human by username" .

# penalty: 4

<dm:Rule1> <dm:penalty> "4" .

# preondition: exists("x",m4:Human,eq(refvar($x,dm:instRef),""))

<dm:PrC> <rdf:type> <dm:Exists> .

<dm:PrC> <dm:key> "x" .

<dm:PrC> <dm:ontoClass> <m4:Human> .

<dm:PrC> <dm:sothat> <dm:PrC1> .

<dm:PrC1> <rdf:type> <dm:Eq> .

<dm:PrC1> <dm:arg1> <dm:PrC2> .

<dm:PrC1> <dm:arg2> "" .

<dm:PrC2> <rdf:type> <dm:RefVar> .

<dm:PrC2> <dm:ref> "$x" .

<dm:PrC2> <dm:var> <dm:instRef> .

# postondition: let("y",reateref(adp:Username))

# setrefvar($y,dm:of,$x)

# setrefvar($x,dm:instRef,".")

<dm:PoC> <rdf:type> <rdf:Seq> .

<dm:PoC> <rdf:_1> <dm:PoC1> .

<dm:PoC> <rdf:_2> <dm:PoC2> .

<dm:PoC> <rdf:_2> <dm:PoC3> .

<dm:PoC1> <rdf:type> <dm:Let> .

<dm:PoC1> <dm:key> "y" .

<dm:PoC1> <dm:val> <dm:PoC1a> .

<dm:PoC1a> <rdf:type> <dm:CreateRef> .

<dm:PoC1a> <dm:ontoClass> <adp:Username> .

<dm:PoC2> <rdf:type> <dm:SetRefVar> .

<dm:PoC2> <dm:ref> "$y" .

<dm:PoC2> <dm:var> <dm:of>.

<dm:PoC3> <rdf:type> <dm:SetRefVar> .

<dm:PoC3> <dm:ref> "$x" .

<dm:PoC3> <dm:var> <dm:instRef> .

<dm:PoC3> <dm:val> "." .

# ation: let("y",reateref(adp:Username))

# setrefvar($y,dm:of,$x)

# setrefvar($y,dm:lambda,"1")

<dm:At> <rdf:type> <rdf:Seq> .

<dm:At> <rdf:_1> <dm:At1> .

<dm:At> <rdf:_2> <dm:At2> .

<dm:At> <rdf:_2> <dm:At3> .

<dm:At1> <rdf:type> <dm:Let> .

<dm:At1> <dm:key> "y" .

<dm:At1> <dm:val> <dm:At1a> .

<dm:At1a> <rdf:type> <dm:CreateRef> .

<dm:At1a> <dm:ontoClass> <adp:Username> .

<dm:At2> <dm:type> <dm:SetRefVar> .

<dm:At2> <dm:ref> "$y" .

<dm:At2> <dm:var> <dm:of> .

<dm:At2> <dm:val> "$x" .

<dm:At3> <dm:type> <dm:SetRefVar> .

<dm:At3> <dm:ref> "$y" .

<dm:At3> <dm:var> <dm:lambda> .

<dm:At3> <dm:val> "1" .

Esimerkkisäännön toiminta dialoginhallinnassa

Seuraavassa ondiagnostiikkatulostus säännön vaikutuksestadialoginhallinnassa.

Proessing rule "Disambiguate human by username".

Proessing preond.

evalnode node http://4m.s.hut.fi/ns/dm/0.1#PrC of type dm:Exists

Found referent http://4m.s.hut.fi/ns/dm/0.1#Ref4 as x

Preond true.

Proessing postond.

Ceating referent of lass http://4m.s.hut.fi/ns/onto/domain/0.1#Username

SetRefVar(http://4m.s.hut.fi/ns/dm/0.1#Ref4,

http://4m.s.hut.fi/ns/dm/0.1#instRef,

.)

Sore now 16

Tämä dialogisäännönevaluointijohtaaevaluaatioluvunensimmäisen keskusteluesimer-

kin mukaiseen keskustelustrategianvalintaan kohdassa 5.1.

In document PDF www.ling.helsinki.fi (sivua 58-64)