|
|
pl:miw:miw08_xtt_rif:presentation_examples [2008/04/13 16:13] miw utworzono |
pl:miw:miw08_xtt_rif:presentation_examples [2008/04/13 16:14] miw |
//Przykład 1 (Warunek RIF-BLD)//\\ | |
Przykład ten prezentuje warunki składające się z atomów, wyrażeń, ram i formuł istnienia. W formułach ramowych zmienne są pokazane na pozycjach identyfikatorów obiektów, właściwości obiektów, lub wartości właściwości. | |
<code>Compact URI prefixes: | |
| |
bks expands into http://example.com/books# | |
auth expands into http://example.com/authors# | |
cpt expands into http://example.com/concepts# | |
| |
Positional terms: | |
| |
"cpt:book"^^rif:iri("auth:rifwg"^^rif:iri "bks:LeRif"^^rif:iri) | |
Exists ?X ("cpt:book"^^rif:iri(?X "bks:LeRif"^^rif:iri)) | |
| |
Terms with named arguments: | |
| |
"cpt:book"^^rif:iri(cpt:author->"auth:rifwg"^^rif:iri | |
cpt:title->"bks:LeRif"^^rif:iri) | |
Exists ?X ("cpt:book"^^rif:iri(cpt:author->?X cpt:title->"bks:LeRif"^^rif:iri)) | |
| |
Frames: | |
| |
"bks:wd1"^^rif:iri["cpt:author"^^rif:iri->"auth:rifwg"^^rif:iri | |
"cpt:title"^^rif:iri->"bks:LeRif"^^rif:iri] | |
Exists ?X ("bks:wd2"^^rif:iri["cpt:author"^^rif:iri->?X | |
"cpt:title"^^rif:iri->"bks:LeRif"^^rif:iri]) | |
Exists ?X ("bks:wd2"^^rif:iri # "cpt:book"^^rif:iri["cpt:author"^^rif:iri->?X | |
"cpt:title"^^rif:iri->"bks:LeRif"^^rif:iri]) | |
Exists ?I ?X (?I["cpt:author"^^rif:iri->?X "cpt:title"^^rif:iri->"bks:LeRif"^^rif:iri]) | |
Exists ?I ?X (?I # "cpt:book"^^rif:iri["cpt:author"^^rif:iri->?X | |
"cpt:title"^^rif:iri->"bks:LeRif"^^rif:iri]) | |
Exists ?S ("bks:wd2"^^rif:iri["cpt:author"^^rif:iri->"auth:rifwg"^^rif:iri | |
?S->"bks:LeRif"^^rif:iri]) | |
Exists ?X ?S ("bks:wd2"^^rif:iri["cpt:author"^^rif:iri->?X | |
?S->"bks:LeRif"^^rif:iri]) | |
Exists ?I ?X ?S (?I # "cpt:book"^^rif:iri[author->?X ?S->"bks:LeRif"^^rif:iri]) | |
</code> | |
| |
**Definicja reguł RIF-BLD:**\\ | |
Składnia prezentacji dla reguł Horna, rozszerza definicje języka warunkowego o następujące produkcje: | |
<code> Group ::= 'Group' IRIMETA? '(' (RULE | Group)* ')' | |
IRIMETA ::= Frame | |
RULE ::= 'Forall' Var+ '(' CLAUSE ')' | CLAUSE | |
CLAUSE ::= Implies | ATOMIC | |
Implies ::= ATOMIC ':-' FORMULA</code> | |
Ruleset to zestaw reguł RIFa. Reguły są generowane przez produkcję Implies, z opcjonalnym kwantyfikatorem Forall. Var, COMPOUND oraz CONDITION zostały zdefiniowane jako część składni dla pozytywnych warunków w Języku Warunkowym. Warto zauważyć, że termy COMPOUND są traktowane jako reguły z pustą częścią warunkową - zwykle są nazywane faktami. | |
| |
//Przykład 2// | |
Prosty warunek biznesowy: | |
<code>If an item is perishable and it is delivered to John more than 10 days after the scheduled delivery date then the item will be rejected by him.</code> | |
Może zostać zapisany za pomocą wartswy prezentacyjnej na dwa sposoby: | |
<code>Użyjemy prefix'u ppl jako skrótu dla http://example.com/people#. | |
Prefix op jest używany dla yet-to-be-determined IRI, który będzie używany dla wbudowanych predykatów RIFa. | |
Prefix cpt - http://example.com/concepts# | |
| |
a. Universal form: | |
| |
Forall ?item ?deliverydate ?scheduledate ?diffduration ?diffdays ( | |
"cpt:reject"^^rif:iri("ppl:John"^^rif:iri ?item) :- | |
And("cpt:perishable"^^rif:iri(?item) | |
"cpt:delivered"^^rif:iri(?item ?deliverydate "ppl:John"^^rif:iri) | |
"cpt:scheduled"^^rif:iri(?item ?scheduledate) | |
External("fn:subtract-dateTimes-yielding-dayTimeDuration"^^rif:iri(?deliverydate ?scheduledate ?diffduration)) | |
External("fn:get-days-from-dayTimeDuration"^^rif:iri(?diffduration ?diffdays)) | |
External("op:numeric-greater-than"^^rif:iri(?diffdays "10"^^xsd:integer))) | |
) | |
| |
b. Universal-existential form: | |
| |
Forall ?item ( | |
"cpt:reject"^^rif:iri("ppl:John"^^rif:iri ?item ) :- | |
Exists ?deliverydate ?scheduledate ?diffduration ?diffdays ( | |
And("cpt:perishable"^^rif:iri(?item) | |
"cpt:delivered"^^rif:iri(?item ?deliverydate "ppl:John"^^rif:iri) | |
"cpt:scheduled"^^rif:iri(?item ?scheduledate) | |
External("fn:subtract-dateTimes-yielding-dayTimeDuration"^^rif:iri(?deliverydate ?scheduledate ?diffduration)) | |
External("fn:get-days-from-dayTimeDuration"^^rif:iri(?diffduration ?diffdays)) | |
External("op:numeric-greater-than"^^rif:iri(?diffdays "10"^^xsd:integer))) | |
) | |
)</code> | |
| |
//Przykład 3//\\ | |
Przykład prezentuje grupę formuł, składającą się z dwóch regół RIF-BLD. Pierwsza z regół jest z Przykładu 2a. Grupa ma adnotację z meta-danych Dublin Core reprezentowanych przez ramę. | |
<code>Compact URI prefixes: | |
| |
bks expands into http://example.com/books# | |
auth expands into http://example.com/authors# | |
cpt expands into http://example.com/concepts# | |
dc expands into http://dublincore.org/documents/dces/ | |
w3 expands into http://www.w3.org/ | |
| |
Group "http://sample.org"^^rif:iri["dc:publisher"^^rif:iri->"w3:W3C"^^rif:iri | |
"dc:date"^^rif:iri->"2008-04-04"^^xsd:date] | |
( | |
| |
Forall ?item ?deliverydate ?scheduledate ?diffduration ?diffdays ( | |
"cpt:reject"^^rif:iri("ppl:John"^^rif:iri ?item) :- | |
And("cpt:perishable"^^rif:iri(?item) | |
"cpt:delivered"^^rif:iri(?item ?deliverydate "ppl:John"^^rif:iri) | |
"cpt:scheduled"^^rif:iri(?item ?scheduledate) | |
External("fn:subtract-dateTimes-yielding-dayTimeDuration"^^rif:iri(?deliverydate ?scheduledate ?diffduration)) | |
External("fn:get-days-from-dayTimeDuration"^^rif:iri(?diffduration ?diffdays)) | |
External("op:numeric-greater-than"^^rif:iri(?diffdays "10"^^xsd:integer))) | |
) | |
| |
Forall ?item ( | |
"cpt:reject"^^rif:iri("ppl:Fred"^^rif:iri ?item) :- "cpt:unsolicited"^^rif:iri(?item) | |
) | |
| |
)</code> | |