====== Reguły wykorzystania podpisów w RIFie ======
Zostanie tutaj opisana koncepcja podpisów (ang. signatures), które są kluczowym mechanizmem umożliwiającym kontrolowanie kontekstu, w którym dane symbole mogą się pojawić. **Należy pamiętać, że podpisy nie są częścią języka logiki w RIF, ponieważ nie pojawiają się w formułach.**
* Wyróżniamy następujące podpisy:
- term{ } - przedstawia kontekst w jakim występują pojedyncze obiekty (ale nie formuły atomiczne)
- atomic{ }
- bi_atomic{ } - przedstawia formuły atomiczne dla wbudowanych predykatów
Ponieważ bi_atomic < atomic, wbudowane formuły atomiczne są również zwykłymi formułami atomicznymi. Zazwyczaj większość formuł atomicznych jest zdefiniowana przez użytkownika i będą one miały podpis atomic, a nie bi_atomic.
* Wszelkie symbole funkcyjne o arności //n// zapisujemy następująco
f_n{(term ... term) => term}, p_n{(term ... term) => atomic}, and bi_n{(term ... term) => bi_atomic}
* Dla każdego zestawu symboli s_1,...,s_k zawartych w SigNames, istnieją podpisy
f_s1...sk{(s1->term ... sk->term) => term} oraz p_s1...sk{(s1->term ... sk->term) => atomic}
są to podpisy dla termów z nazwanymi argumentami oraz predykatów z nazwanymi argumentami.
* Symbol ze zbioru //Const// może mieć tylko jeden zpodpisów: term, f_n, p_n, albo bi_n, gdzie n>=0, lub f_s1...sk{(s1->term ... sk->term) => term}, p_s1...sk{(s1->term ... sk->term) => atomic}, dla pewnych s1,...,sk należących do SigNames. Symbol ten **nie może** mieć podpisu atomic, bi_atomic, ponieważ tylko złożone termy mogą mieć taki podpis. A zatem, w RIF-BLD każdy stały symbol może być:
- indywidualnym
- predykatem o określonej arności, bądź określonymi nazwami argumentów
- wbudowanym o określonej arności
- funkcją o określonej arności
- **Niedopuszczalne jest, aby jeden symbol odgrywał więcej niż jedną rolę**
* Stałe symbole, które odpowiadają typom ze Schematów XML mają zawsze podpis term w RIF-BLD. Symbole typu rif:iri, rif:local, mogą mieć następujące podpisy: term, f_n, p_n, lub bi_n, for n = 0,1,....; albo f_s1...sk, p_s1...sk, dla pewnych nazw argumentów s1,...,sk należących do SigNames.
* Wszystkie zmienne mają podpis term{ }.
* Podpis równości ={(term term) => atomic, (term term) => term}. Oznacza to, że równość może porównywać tylko te termy, których podpisem jest term, nie może porównywać nazw predykatów, czy symboli funkcji.
* Podpis frame, ->, to ->{(term term term) => atomic, (term term term) => term}.
* Podpis membership, #, to #{(term term) => atomic, (term term) => term}.
* Podpis podklasy relationship to ##{(term term) => atomic, (term term) => term}.
[[pl:miw:miw08_xtt_rif|Powrót do dokumentu]]