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.
(barva cervena zelena zluta cerna modra)
(zvire andulka pes)
(rostlina pampeliska)
(osoba muz Jan_Novak Manesova_390 Hradec_Kralove)
(film sci-fi Ja_robot 2004 Alex_Proyas Will _Smith Bridget_Moynahan James_Cromwell)
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í.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í.
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í |
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) |
(deffacts moje_filmy
(film (nazev Vetrelec) (rok 1979) (rezie Ridley_Scott) (herci Sigourney_Weaver John_Hurt Ian_Holm))
)