Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:miw:miw08_hml_rules [2008/04/08 15:13] gjn |
pl:miw:miw08_hml_rules [2008/06/01 18:35] miw |
====== Opis ====== | |
Michał, Rogula, <michal.rogula@wp.pl> | |
- Porównać i omówić metody reprezentowania atrybutów w językach: | |
| |
* RDF | |
* OWL | |
* RIF | |
* R2ML | |
* RuleML | |
| |
oraz metody reprezentowania reguł w: | |
* RIF | |
* R2ML | |
* RuleML | |
| |
====== Spotkania ====== | |
===== 08.02.26 ===== | |
* rif | |
* rdf/owl<->rif | |
| |
===== 08.03.04 ===== | |
* repr. w RDF (attrybuty) | |
* <del>próba zapisu [[hekate:hekate_case_thermostat]] org. reguł w RIF, RDF</del> | |
| |
| |
===== 080311 ===== | |
* próba zapisu [[hekate:hekate_case_thermostat]] org. reguł w RIF, RDF | |
| |
===== 080318 ===== | |
* j.w. | |
| |
| |
| |
| |
===== 080408 ===== | |
* całość therm w RDF, osobna przestrz nazw | |
* zapis ARD w RDF [[hekate:hekate_markup_language]] | |
| |
===== 080422 ===== | |
* zapis grafów w rdf | |
| |
====== Projekt ====== | |
| |
Jeżeli dzień=poniedziałek wtedy temp=20st | |
| |
mamy 2 atrybuty: | |
* dzień, przyjmuje wart symboliczne ze zb: pon-niedz | |
* temp, jest liczbą, np. float, z zakresu, np. 0-20st | |
| |
===== 08.02.26 ===== | |
**RIF**(Rule Interchange Format) jest stworzonym przez W3C (Word Wide Web Consorcium) formatem reguł pozwalających na ich wymianę dla różnych języków reguł w sieciach semantycznych (RDF, OWL). (def: http://www.webopedia.com/TERM/R/Rule_Interchange_Format.html) | |
| |
[[http://www.w3.org/TR/rif-bld/|Dokumentacja RIF]] przedstawia dwa rodzaje składni. Są to tzw: | |
* Presentation syntax – Używana w formalnych definicjach, szczególnie dla semantyki. | |
* XML syntax - Jest to tzw. XML serialization składni prezentacji. Kluczowe cechy tej składni wywodzą się ze składni prezentacji, lecz niektóre aspekty związane z wymianą reguł nie mają swoich odpowiedników w presentation syntax. | |
| |
**Atrybut** to parametr zawierający dodatkowe informacje o elemencie struktury logicznej identyfikowanym przez dany znacznik. | |
| |
Sposób przedstawiania atrybutów w [[http://www.w3.org/TR/rif-bld/|Presentation syntax]] : | |
| |
nazwa_atrybutu->wartość_atrybutu^^type | |
| |
Sposób przedstawiania atrybutów w [[http://www.w3.org/TR/rif-bld/|XML syntax]]: | |
| |
<slot><Const>nazwa_atrybutu</Const><Var type=””>wartość_atrybutu</Var></slot> | |
| |
| |
**Przykład:** | |
* Presentation syntax | |
| |
author^^rif:local -> ?Author | |
price^^rif:local -> 49^^xsd:integer | |
| |
* XML syntax | |
<code xml> | |
<slot><Const type="rif:local">author</Const><Var>Author</Var></slot> | |
<slot><Const type="rif:local">price</Const><Const type="xsd:integer">49</Const></slot> | |
</code> | |
| |
Prefix xsd: oznacza przestrzeń nazw XML http://www.w3.org/2001/XMLSchema#, a prefix rif: URI przestrzeni nazw RIF http://www.w3.org/2007/rif# . | |
rif:local (dla stałych symboli niewidocznych poza daną formułą rif). | |
| |
**RIF RDF oraz OWL Kompatybilność** | |
| |
RIF definiuje sposób przenoszenia regół w sieci. Reguły wymieniane poprzez RIF mogą się odnosić się do zewnętrznych źródeł danych i mogą bazować na pewnych modelach które są reprezentowane za pomocą języków różnych od RIF np: RDF , RDFS, OWL. | |
Dokument http://www.w3.org/TR/rif-rdf-owl określa kompatybilność RIF i RDF(S). | |
Przyszła wersja tego dokumentu będzie również określać kompatybilność z ontologią OWL. | |
| |
* Zgodność pomiędzy stałymi symbolami w RIF oraz nazwami w RDF graphs np.: | |
| |
RDF - "literal string" | |
| |
RIF - "literal string"^^xsd:string | |
| |
* Zgodność pomiędzy zdaniami w RDF (trojki postaci: s p o) i pewnymi rodzajami formuł w RIF (formula w postaci: s'[p' -> o'], gdzie s', p', oraz o' są symbolami RIF zgodnymi odpowiednio z symbolami RDF’a s, p, oraz o), np.: | |
| |
RDF triple: | |
john uncleOf marry | |
| |
Formuła RIF frame: | |
"john"^^rif:iri["uncleOf"^^rif:iri -> "mary"^^rif:iri] | |
| |
| |
| |
| |
| |
| |
| |
| |
===== 08.03.04 ===== | |
| |
**RDF** (Resource Description Framework) jest podstawowym językiem używanym do zapisu informacji w Sieci Semantycznej i przeznaczonym do przetwarzania maszynowego. W dosłownym tłumaczeniu jest środowiskiem do opisu zasobów (jako zasób rozumiemy: dowolny obiekt znajdujący się w sieci, pojęcia abstrakcyjne, relacje i obiekty fizyczne). | |
Do opisu zasobów używa się tzw. stwierdzeń (ang. statements), które składają się z: | |
* Podmiotu – opisywany zasób. | |
* Orzeczenia (predykatu) – nazwa cechy lub relacji dotyczącej opisywanego podmiotu. | |
* Obiektu – inny zasób lub stała wartość określona mianem literału. | |
| |
| |
Sposób przedstawiania atrybutów w [[http://www.w3.org/TR/rdf-primer/|RDF]]: | |
| |
< opisywany_zasob > < nazwa_atrybutu > „wartosc_atrybutu”. | |
| |
**Przykład opisu w RDF pewnego „zasobu”:** | |
| |
Zwykłe zdanie: | |
| |
Janek jest twórcą dokumentu http://www.dokumenty.org/dokument1 | |
| |
Zdanie RDF: | |
| |
http://www.dokumenty.org/dokument1 posiada własność twórca której wartością jest Janek | |
| |
Właściwa forma RDF (musi być zakonczona kropką): | |
| |
<http://www.dokumenty.org/dokument1> <http://purl.org/dc/elements/1.1/creator> „Janek”. | |
| |
Graf RDF: | |
| |
{{:pl:miw:rdf.png|:pl:miw:rdf.png}} | |
| |
Styl XML: | |
<code xml> | |
<?xml version="1.0"?> | |
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> | |
<rdf:Description rdf : about="subject"> | |
<predicate>Object</predicate> | |
</rdf:Description> | |
</rdf:RDF> | |
</code> | |
Nasz przykład zapisany w XML: | |
<code xml> | |
<?xml version="1.0"?> | |
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |
xmlns:DC="http://purl.org/dc/elements/1.1/"> | |
<rdf:Description rdf : about="http://www.dokumenty.org/dokument1"> | |
<DC:creator resource = "http://www.tworcy.org/janek"> | |
</rdf:Description> | |
</rdf : RDF> | |
</code> | |
Użyty jest tu predykat pochodzący z “biblioteki” Dublin Core (słownictwo zdefiniowane do opisu metadanych różnych dokumentów - w szczególności bibliotecznych: daty utworzenia, autora itp.). Jest to oznaczone w korzeniu dokumentu (którym jest zawsze znacznik rdf:RDF). Podmioty definiujemy znacznikiem rdf:Description z atrybutem rdf:abort zawierającym URI zasobu. Zdania opisujące ten podmiot są zapisywane jako węzły potomne. Obiekty, które są jednocześnie zasobami zapisujemy w postaci węzła skróconego z URI tego zasobu umieszczonym w atrybucie rdf:resorce. | |
| |
| |
| |
| |
| |
| |
===== 08.03.11 ===== | |
| |
**Użycie faktów: | |
** | |
Wyrażenia RDF występują w postaci trójek zwanych zdaniami (statements). Wszystko do czego odnoszą się zdania są zasobami z pewnymi identyfikatorami lub wartościami. Po to aby fakty były użyte w zdaniach, musimy dysponować pewną tożsamością, która z kolei odpowiada pewniej wartości zasobu. | |
| |
By zapewnić taką reprezentacje faktów, wprowadza się nowe identyfikatory zasobów, powiązanych tutaj z przestrzenią nazw z prefixem rul: która wskazuje na przestrzeń nazw URI | |
<http://id.ninebynine.ord/RDFRules/1.0/>: | |
| |
* rul:Fact – jest pomocniczym typem danych który jest stosowany jako zasób reprezentujący fakt. | |
* rul:pred – to własność który określa predykat użyty przez fakt | |
* rul:args – to własność określająca listę argumentów predykatu użytą w fakcie | |
| |
| |
Przykład pewnego faktu reprezentowanego w RDF /N3 (notacja3 - http://en.wikipedia.org/wiki/Notation_3) jako | |
| |
ex:subj ex:pred [ rdf:type rdf:List ; | |
rdf:first ex:val2 ; | |
rdf:rest [ rdf:type rdf:List ; | |
rdf:first ex:val3 ; | |
rdf:rest [ rdf:type rdf:List | |
: | |
... rdf:rest rdf:nil ]]] . | |
| |
Resource który reprezentuje ten fakt jest konstruowany jak pokazano w tym przykładzie RDF/N3: | |
| |
[ rdf:type rul:Fact ; | |
rul:pred ex:pred ; | |
rul:args [ rdf:type rdf:List ; | |
rdf:first ex:subj ; | |
rdf:rest _:genid1 ] ] . | |
| |
gdzie _:genid1 jest identyfikatorem reprezentującym „ogon” listy argumentów predykatu | |
| |
**Reprezentacja reguł:** | |
Podstawowa struktura reguł których używamy to zbiór faktów poprzedników (antecedent facts) i faktów z nich wynikających (consequent facts) | |
| |
Reguła: | |
| |
Afact1 & Afact2 & ... -> Cfact1 & Cfact2 & ... | |
| |
jest reprezentowana w RDF (używając notacji3 (N3 - http://en.wikipedia.org/wiki/Notation_3)) jako: | |
| |
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . | |
@prefix rul: <http://id.ninebynine.org/RDFRules/1.0/> . | |
@prefix ex: <http://example.org/#> . | |
[ rdf:type rul:Rule ; | |
rul:from Afact1 ; | |
rul:from Afact2 ; | |
... | |
rul:infer Cfact1 ; | |
rul:infer Cfact2 ; | |
... ] . | |
| |
Taka reprezentacja reguł wprowadza pewne nowe identyfikatory zasobów, powiązanych tutaj z przestrzenią nazw z prefixem rul: która wskazuje na przestrzeń nazw URI | |
<http://id.mimesweeper.com/RDFExpert/V1.0/ess#>: | |
| |
* rul:Rule - to pomocniczy typ danych który opisuje zasób który reprezentuje regułę | |
* rul:from - to właściwość która określa zasób reprezentujący fakt Afact (antecedent fact) reguły, jeden z faktów z którego może być wyciągnięty wniosek | |
* rul:infer – to właściwość która wskazuje fakt Cfact (conclusion fact) który może być wywnioskowany jeśli wszystkie fakty poprzedzające (antecedent facts) są prawdą. | |
| |
| |
Tak oto poniższa reguła: | |
| |
ex:a1( ex:a1s, ex:a1v2, ex:a1v3 ) & | |
ex:a2( ex:a2s, ex:a2v2 ) -> | |
ex:c1( ex:c1s, ex:c1v2, ex:a1v3 ) & | |
ex:c2( ex:c2s ) . | |
| |
była by reprezentowana w RDF/N3 jako: | |
| |
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . | |
@prefix rul: <http://id.ninebynine.org/RDFRules/1.0/> . | |
@prefix ex: <http://example.org/#> . | |
[ rdf:type rul:Rule ; | |
rul:from _:genid1 ; | |
rul:from _:genid2 ; | |
rul:infer _:genid3 ; | |
rul:infer _:genid4 ] | |
| |
gdzie: genid1, genid2, genid3, genid4 są identyfikatorami reprezentującymi „ogon” listy argumentów predykatu np. genid2 może być opisany jako: | |
| |
_:genid2 rdf:type rul:Fact ; | |
rul:pred ex:a2 ; | |
rul:args [ rdf:type rdf:List ; | |
rdf:first ex:a2s ; | |
rdf:rest [ rdf:type rdf:List ; | |
rdf:first ex:a2v2 ; | |
rdf:rest rdf:nil ]] . | |
| |
**Zmienne | |
** | |
w ogólnym znaczeniu to identyfikatory które reprezentują pewne określone wartości, ale mogą róznież reprezentować różne wartości jeśli są użyte w innym kontekscie lub w róznych odwołaniach. Na przykład, reguła: | |
| |
parents( ?a, ?b, ?c ) & | |
parents( ?b, ?d, ?e ) & | |
parents( ?c, ?f, ?g ) -> grandparents( ?a, ?d, ?e, ?f, ?g ) | |
| |
Moze być wywołana dl zbiorów faktów które jednocześnie pasują do reguły przodka (antecedents); dla kazdego zbioru faktów, zmienne będą związane z innymi wartościami. | |
| |
When a variable appears in a fact that is part of a rule, the scope of the variable is the containing rule. That is, all occurrences of a given variable that appear within the rule are required to bind to the same value in any single invocation of the rule. | |
| |
Zmienne są reprezentowane przez zasób typu rul:Var, oraz posiadają rdfs:label własność która jest nazwą zmiennej. Tak oto fakt: | |
| |
ex:Parents( ?a, ?b, ?c ) . | |
| |
może być reprezentowany w RDF/N3 jako: | |
| |
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . | |
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . | |
@prefix rul: <http://id.ninebynine.org/RDFRules/1.0/> . | |
@prefix ex: <http://example.org/#> . | |
_:genid1 ex:Parents [ rdf:type rdf:List ; | |
rdf:first _:genid2 ; | |
rdf:rest [ rdf:type rdf:List ; | |
rdf:first _:genid3 ; | |
rdf:rest rdf:nil ] ] . | |
_:genid1 rdf:type rul:Var ; | |
rdfs:label "?a" . | |
_:genid2 rdf:type rul:Var ; | |
rdfs:label "?b" . | |
_:genid3 rdf:type rul:Var ; | |
rdfs:label "?c" . | |
| |
The identity (uniqueness) of a variable is bound to the resource that represents it, not to its name. The variable name may be used (in conjunction with scoping rules) as a syntactic device for deciding which variable occurrences refer to the same variable, and hence which at any instant or invocation must correspond to the same value. Occurrences of the same variable name within a rule is an example of multiple occurrences of the same variable. | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
===== 080408 ===== | |
| |
**Całość therm w RDF: ** [[pl:miw:miw08_hml_rules:hekate_case_thermostat]] | |
| |
| |
====== Sprawozdanie ====== | |
| |
| |
| |
| |
| |
====== Materiały ====== | |
| |
**Uniform Resource Identifier** http://pl.wikipedia.org/wiki/Uniform_Resource_Identifier/ | |
| |
**Representing Facts and Rules in RDF** http://www.ninebynine.org/RDFNotes/RDFFactsAndRules.html | |
| |
**Struktura Opisu Zasobów (RDF)** http://www.geocities.com/pan_andrew/ResourceDescriptionFramework.htm#ref-xhtml | |
| |
**RIF Core Design** http://www.w3.org/TR/2007/WD-rif-core-20070330/ | |