[[
✎ pl:miw:miw08_xtt_rif:obsolate
]]
aiWiki
Pokaż stronę
Ostatnie zmiany
Indeks
Zaloguj
Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić.
==== Przypisywanie podpisu do stałych symboli ==== Opis podpisów (ang. signatures) został umieszczony [[pl:miw:miw08_xtt_rif:signatures|tutaj]]. Podpisy nie są częścią składni RIFa. ==== Obsługiwane typy termów ==== RIF-BLD wspiera powyższe typy termów: * stałe * zmienne * pozycjonowane * z nazwanymi argumentami * równościowe * ramy * należące do klasy * należące do podklas ==== Wspierane przestrzenie symboli ==== * [[http://www.w3.org/2001/XMLSchema#string|xsd:string]] * [[http://www.w3.org/2001/XMLSchema#decimal|xsd:decimal]] * [[http://www.w3.org/2001/XMLSchema#time|xsd:time]] * [[http://www.w3.org/2001/XMLSchema#dateTime|xsd:date]] * [[http://www.w3.org/2001/XMLSchema#dateTime|xsd:dateTime]] * [[http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral|rdf:XMLLiteral]] * rif:text (dla ciągów znaków z dołączonymi tagami językowymi) * rif:iri (dla **internationalized resource identifiers** czyli **IRI**s) * rif:local (dla stałych symboli, nie widocznych poza poszczególymi zestawami formuł RIF) ==== Wspierane formuły ==== * warunek RIF-BLD * reguła RIF-BLD ==== Serializacja XML dla przenoszalności RIF ==== Serializacja XML dla składni prezentacji RIF-BLD zaprezentowana w tej sekcji jest z nią przemienna. Naśladując Javę i RDF, używamy nazw pisanych dużymi literami dla elementów klas oraz nazw które zaczynają się od małej litery dla elementów ról.\\ Wszystkie klasy zapisywane dużymi literami w składni prezentacji, jak CONDITION, stają się tagami (?) XMLa. Zachowują się jak makra i nie są widoczne w instance markup. Zacznijmy od serializacji **Języka Warunkowego** w XMLu: <code>Klasy, role i ich zamierzone znaczenie - And (conjunction) - Or (disjunction) - Exists (quantified formula for 'Exists', containing declare and formula roles) - declare (declare role, containing a Var) - formula (formula role, containing a CONDITION formula) - Uniterm (term or atomic formula, positional or with named arguments) - Member (member formula) - Subclass (subclass formula) - Frame (Frame formula) - object (Member/Frame role containing a TERM or an object description) - op (Uniterm role for predicates/functions as operations) - arg (argument role) - upper (Member/Subclass upper class role) - lower (Member/Subclass lower instance/class role) - slot (Uniterm/Frame slot role, prefix version of slot infix ' -> ') - Equal (prefix version of term equation '=') - side (Equal left-hand side and right-hand side role) - Const (slot, individual, function, or predicate symbol, with optional 'type' attribute) - Var (logic variable)</code> Składnia XML dla przestrzeni symboli wykorzystuje atrybut type związany z elementami term, jak Const. Na przykład literał w xsd:dateTime data type może być przedstawiony jako <Const type="xsd:dateTime">2007-11-23T03:55:44-02:30</Const>. **//[[pl:miw:miw08_xtt_rif:przyklad3|Przykład 3]]//**\\ Przykład ten obrazuje serializację XML dla warunkór RIFa. **Serializacja języka reguł**\\ Jest to rozszerzenie Języka Warunkowego poprzez serializację reguł RIF-BLD. Element Forall zawira role elements declare and formula, które były wcześniej wykorzystywane w elemencie Exists. Element Implies zawiera role elementów if oraz then rozróżniające te dwie części reguły. <code>Klasy, role i ich zamierzone znaczenie - Ruleset (rule collection, containing rule roles) - Forall (quantified formula for 'Forall', containing declare and formula roles) - Implies (implication, containing if and then roles) - if (antecedent role, containing CONDITION) - then (consequent role, containing a Uniterm, Equal, or Frame)</code> **//[[pl:miw:miw08_xtt_rif:przyklad4|Przykład 4]]//**\\ Przykład przedstawia warunek z //przykładu 2a// zapisany za pomocą XML'a: ===== Przemyślenia dotyczące reguł zawierających przypisanie ===== Przeglądając dokumentacje RIF'a nie znalazłem wzmianki o operacji przypisania. Jedną z metod, byłoby zaproponowanie zaimplementowanie predykatu fn:assign(A,B) przypisującego elementowi A wartość elementu B. Wydaje mi się, że ze względu na trwające ciągle prace nad formatem kwestia ta pozostaje otwarta i można przyjąć, że taki warunek jest formułowalny w RIF'ie.\\ Proponowany przeze mnie zapis wyglądał by tak: <code xml> <Ruleset> <rule> <declare><Var>A</Var></declare> <declare><Var>B</Var></declare> <declare><Var>C</Var></declare> <formula> <Implies> <if> <formula> <Uniterm> <op><Const type="rif:iri">op:numeric-lesser-than</Const></op> <arg><Var>A</Var></arg> <arg> <Uniterm> <op><Const type="rif:iri">op:numeric-add</Const></op> <arg><Const type="">3</Const></arg> <arg><Var>B</Var></arg> </Uniterm> </arg> </Uniterm> </formula> </if> <then> <Uniterm> <op><Const type="rif:iri">fn:assign</Const></op> <arg><Var>C</Var></arg> <arg><Var>B</Var></arg> </Uniterm> </then> </Implies> </formula> </rule> </Ruleset> </code> Poniższe propozycje zapisu XTT za pomocą RIFa są oparte na proponowanym XTTMLu i są z nim zestawione. Jest to wstępna wersja, która zostanie dopracowana. ^XTTML ^RIF ^ |<code xml><xtt_table id="xtt_1"> ... </xtt_table></code>|<code xml><Group id="xtt_1"> ... </Group></code>| |<code xml><rule id="rul_1"> ... </rule></code>|<code xml><sentence id="rul_1"> ... </sentence></code>| |<code xml><schema> <independent> <attref ref="att_0"/> </independent> <dependent> <attref ref="att_1"/> </dependent> </schema> ...</code>|<code xml><Forall> <declare><Var>att_0</Var></declare> <declare><Var>att_1</Var></declare> ... </Forall></code>| |<code xml><condition> ... </condition></code>|<code xml><formula> <Implies> <if> ... </if> ... </Implies></code>| |<code xml><decision> ... </decision> <link xtt="xtt_1"/></code>|<code xml><then> <Atom> <op><Const type="rif:iri">run</Const></op> <arg> <Atom> <op><Const type="rif:iri">xtt_link</Const></op> <arg><Const type="xsd:string">xtt_1</Const></arg> </Atom> </arg> ... </Atom> </then></code> === Przykład 1: calculations (factorial) === <code> |----------------------------------------------------| | | | x s || s | |->------------ x y s || y | NA ||=x --+------> ------------------- | >0 ||=s-1 --| || | >0 >0 || =y*s -----| =0 || =1 -----------| >0 =1 || -----------+------> </code> <code xml> <Group id="xtt_table1"> <sentence id="xtt_table1_row1"> <Implies> <if> <External> <content> <Atom> <op><Const type="rif:iri">fn:is_empty</Const></op> <arg><Var>x</Var></arg> </Atom> </content> </External> </if> <then> <Atom> <op><Const type="rif:iri">xtt:concl</Const></op> <arg> <External> <content> <Expr> <op><Const type="rif:iri">xtt:next_table</Const></op> <arg><Const type="xsd:string">xtt_table2</Const></arg> </Expr> </content> </External> </arg> <arg> <External> <content> <Expr> <op><Const type="rif:iri">op:assign</Const></op> <arg><Var>s</Var></arg> <arg><Var>x</Var></arg> </Expr> </content> </External> </arg> </Atom> </then> </Implies> </sentence> <sentence id="xtt_table1_row2"> <Implies> <if> <External> <content> <Atom> <op><Const type="rif:iri">op:numeric-greater-than</Const></op> <arg><Var>s</Var></arg> <arg><Const type="xsd:decimal">0</Const></arg> </Atom> </content> </External> </if> <then> <Atom> <op><Const type="rif:iri">xtt:concl</Const></op> <arg> <External> <content> <Expr> <op><Const type="rif:iri">xtt:next_table</Const></op> <arg><Const type="xsd:string">xtt_table2</Const></arg> </Expr> </content> </External> </arg> <arg> <External> <content> <Expr> <op><Const type="rif:iri">op:assign</Const></op> <arg><Var>s</Var></arg> <arg> <External> <content> <Expr> <op><Const type="rif:iri">op:numeric-substract</Const></op> <arg><Var>s</Var></arg> <arg><Const type="xsd:decimal">1</Const></arg> </Expr> </content> </External> </arg> </Expr> </content> </External> </arg> </Atom> </then> </Implies> </sentence> </Group> <Group id="xtt_table2"> <sentence id="xtt_table2_row1"> <Implies> <if> <And> <formula> <External> <content> <Atom> <op><Const type="rif:iri">op:numeric-greater-than</Const></op> <arg><Var>x</Var></arg> <arg><Const type="xsd:decimal">0</Const></arg> </Atom> </content> </External> </formula> <formula> <External> <content> <Atom> <op><Const type="rif:iri">op:numeric-greater-than</Const></op> <arg><Var>s</Var></arg> <arg><Const type="xsd:decimal">0</Const></arg> </Atom> </content> </External> </formula> </And> </if> <then> <Atom> <op><Const type="rif:iri">xtt:concl</Const></op> <arg> <External> <content> <Expr> <op><Const type="rif:iri">xtt:next_table</Const></op> <arg><Const type="xsd:string">xtt_table1</Const></arg> </Expr> </content> </External> </arg> <arg> <External> <content> <Expr> <op><Const type="rif:iri">op:assign</Const></op> <arg><Var>y</Var></arg> <arg> <External> <content> <Expr> <op><Const type="rif:iri">op:numeric-multiply</Const></op> <arg><Var>y</Var></arg> <arg><Var>s</Var></arg> </Expr> </content> </External> </arg> </Expr> </content> </External> </arg> </Atom> </then> </Implies> </sentence> <sentence id="xtt_table1_row2"> <Implies> <if> <Equal> <side><Var>x</Var></side> <side><Const type="xsd:decimal">0</Const></side> </Equal> </if> <then> <Atom> <op><Const type="rif:iri">xtt:run_many</Const></op> <arg> <External> <content> <Expr> <op><Const type="rif:iri">op:assign</Const></op> <arg><Var>y</Var></arg> <arg><Const type="xsd:decimal">1</Const></arg> </Expr> </content> </External> </arg> <arg> <External> <content> <Expr> <op><Const type="rif:iri">xtt:return</Const></op> <arg><Var>s</Var></arg> <arg><Var>x</Var></arg> <arg><Var>y</Var></arg> </Expr> </content> </External> </arg> </Atom> </then> </Implies> </sentence> <sentence id="xtt_table2_row3"> <Implies> <if> <And> <formula> <External> <content> <Atom> <op><Const type="rif:iri">op:numeric-greater-than</Const></op> <arg><Var>x</Var></arg> <arg><Const type="xsd:decimal">0</Const></arg> </Atom> </content> </External> </formula> <formula> <Equal> <side><Var>s</Var></side> <side><Const type="xsd:decimal">1</Const></side> </Equal> </formula> </And> </if> <then> <Atom> <op><Const type="rif:iri">xtt:return</Const></op> <arg><Var>s</Var></arg> <arg><Var>x</Var></arg> <arg><Var>y</Var></arg> </Atom> </then> </Implies> </sentence> </Group> </code> Obie tablice w formacie xml: {{:pl:miw:miw08_xtt_rif:factorial.xml|factorial.xml}}, {{:pl:miw:miw08_xtt_rif:factorial1.xml|factorial1.xml}} ---- Powyższy przykład został zwalidowany za pomocą dostępnych arkuszy XSD. Jedyny element, który zgłasza błędy jest to parametr ''id'', aczkolwiek ze względu na brak walidacji niektórych przykładów obecnych w dokumentacji, nie należy się tym przejmować. Nigdzie w dokumentacji nie ma wyraźnego zakazu wykorzystywania elementów standardu XML.
pl/miw/miw08_xtt_rif/obsolate.txt
· ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
Pokaż stronę
Poprzednie wersje
Menadżer multimediów
Do góry