Znalostní technologie I.
 Rozcestnik                   Pár slov ...                   Znalostní technologie II.                   Znalostní technologie III.                   Znalostní technologie IV.                   Další zdroje                  
Dnes je:        Aktuální čas: 00:00       Moudra: 

LEKCE 8.

Náplň lekce:


Šablony (deftemplates) - první nahlédnutí

Až dosud jsme používali tzv. jednoduché fakty, které obsahovaly název relace s hodnotou nebo hodnotami (= seznam). Fakt mohl obsahovat hodnoty na sobě zcela nezávislé (viz. níže příklad 1.) nebo byly součástí faktu takové hodnoty, které spolu nějak souvisely (viz. níže příklad 2.). Sestavení faktů tak jak vidíme u příkladu 2 je celkem nepraktické. Například při pohledu na fakt nemusí být patrné co znamenenají jeho jednotlivé položky (musíme často hádat co položka znamená ... Alex_Proyas je herec nebo režisér?), obtížněji se s celým faktem zachází (vyhledávání), zápis je více chaotický.

Z těchto a jiných důvodů se zde nabízí lepší řešení problému - VYUŽITÍ ŠABLON.

Příklad 1.

(barva cervena zelena zluta cerna modra)
(zvire andulka pes)
(rostlina pampeliska)

Příklad 2.

(osoba muz Jan_Novak Manesova_390 Hradec_Kralove)
(film sci-fi Ja_robot 2004 Alex_Proyas Will _Smith Bridget_Moynahan James_Cromwell)


Co je šablona ?

Jedná se o programovou strukturu, díky které můžete vytvářet tzv. strukturované fakty. Jinak řečeno svému faktu/faktům dodáte určitou - Vámi předem definovanou strukturu, podle které budou Vaše fakty vytvořeny. Šablonou vlastně vytvoříte jakýsi základ pro Vaše budoucí fakty a tak jim dodáte určitý řád. Můžete si šablonu představit jako formulář. Ten obsahuje určitá pole. Každé pole má nějakou vlastnost/vlastnosti. Máte např. pole jméno, které může např. nabývat max. 20 znaků, pole stav jen několika hodnot svobodný/á, vdaný/á apod.

Poznámka: Tato struktura je podobná struktuře Record - záznam z jiných programovacích jazyků. K položkám faktu budete moci přistupovat podle jména nejen podle pořadí.

VYSVĚTLUJÍCÍ PŘÍKLAD

Vytvoření šablony

Vytvoření šablony je demonstrováno na obrázku obr.1.

Jak vidíte na obr.1, šablona je tvořena svým názvem a položkami (= sloty, rubriky) s názvem. Konkrétní příklad je uveden na obr.2. U každé položky můžeme definovat její další charakteristiky. Bude se jednat o podrobnější specifikaci polí resp. jejich vymezení.

Konstrukce šablony

VLASTNOSTI SLOTŮ (položek, rubrik)

type SYMBOL, STRING, LEXEME (pozn. LEXEME zahrnuje oba předchozí typy SYMBOL i STRING)
INTEGER (celé číslo),FLOAT (desetinné číslo), NUMBER (oba předchozí typy)
BOOLEAN (true, false)
range rozpětí hodnot
allowed-values výčet povolených hodnot v příp. definice typu slotu
default předpokládaná hodnota rubriky, užijeme vždy, když rubrika nemá nějakou hodnotu - ta defaultní se nám do pole sama doplní

Možnosti pro allowed-values

Allowed-symbols: bohaty maly svetly
Allowed-strings: "Michal" "Jana" "Marek"
Allowed-numbers: 1 2 4.5 -2.5 5e-4
Allowed-integers: -120 51
Allowed-floats: 2.5 -5.8 215.12
Allowed-values: "Jan" chudy 120 -5 (dovoleny všechny možné typy hodnot)

Na co si dát pozor?

Nevyplňování rubrik

Máme několik možností jak nakládat s rubrikami:

1. vyplnit všechny hodnoty slotů

(deffacts moje_filmy
     (film (nazev Vetrelec) (rok 1979) (rezie Ridley_Scott) (herci Sigourney_Weaver John_Hurt Ian_Holm))
)


2. vyplnit jen některé hodnoty, pak jsou zde určité odlišnosti:

  1. pokud bylo nastaveno default, Clips sám hodnotu u default doplní
  2. pokud jsme uvedli typ SYMBOL nebo nic, pak Clips doplní nil
  3. pokud INTEGER či FLOAT, pak bude doplněno 0 nebo 0.0 (bez range)
  4. pokud jsme uvedli range, pak bude dosazena nejnižší hodnota rozsahu
  5. pokud nebylo nic uvedeno u multislotu, pak Clips nechá prázdný seznam

Šablony v PRAXI

Úloha s filmy

Zadání:

  1. definujte šablonu pro filmy a vytvořte fakty, které budou na definované šabloně založené
  2. napište pravidlo, které Vám vypíše název filmu, jeho žánr a herce, kteří v něm hrají
  3. napište pravidlo, které Vám vypíše filmy, které byly natočeny před rokem 1980
  4. dále se pokuste vytvořit pravidlo, které vypíše filmy, kde hrála nebojácná herečka Sigourney Weaver
  5. ... a pravidlo, kterým zjistíte, ve kterých filmech nehrál herec Lance Henriksen
  6. a to těžší nakonec: vytvořte pravidlo, kterým zjistíte filmy, které byly natočeny po roce 1990. Tyto filmy dejte do noveho seznamu a jeho položky potom vypište.
Úloha je blíže demonstrována na obrázku:

Definice šablony a faktů k úloze s filmy

Celá úloha (stáhnout: movies.clp)

^ Nahoru ^       Pokračování ==>


Validace

Valid XHTML 1.0 Strict

Valid CSS!

Monitoring webu