Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:miw:miw08_ard_rdf [2008/04/08 11:04] miw |
pl:miw:miw08_ard_rdf [2008/09/18 12:18] gjn koniec |
====== Opis ====== | |
Rafał Szymczyk, <raf.szymczyk@o2.pl> | |
| |
Zapis ARD przy pomocy RDF w XSLT | |
| |
====== Spotkania ====== | |
===== 08.03.04 ===== | |
===== 08.03.18 ===== | |
* repr atrybutów dla reguł RIF/OWL/RDF | |
| |
| |
| |
====== Projekt ====== | |
jak sensownie repr. ard w rdf? | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
===== RDF ===== | |
| |
**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:about 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:resource. | |
| |
| |
| |
**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 dla 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. | |
| |
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" . | |
| |
| |
Linki: | |
| |
[[http://www.ninebynine.org/RDFNotes/RDFFactsAndRules.html#xtocid-7560072| Representing Facts and Rules in RDF]] | |
| |
[[http://agentlab.swps.edu.pl/agent_papers/Gasiorowski_MS_2006.pdf]] | |
| |
| |
| |
===== RIF ===== | |
| |
**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 -> "marry"^^rif:iri] | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
====== Sprawozdanie ====== | |
| |
| |
| |
====== Materiały ====== | |
| |
[[hekate:hekate_case_thermostat]] | |
| |
**ARD:** | |
| |
https://ai.ia.agh.edu.pl/wiki/hekate:bib:hekate_bibliography#gjn2008flairs-userv-submitted | |
| |
Nalepa, G. J. (2008). UServ Case Study, Conceptual Design with ARD+ Method. Paper presented at the FLAIRS2008. | |
| |
https://ai.ia.agh.edu.pl/wiki/hekate:bib:hekate_bibliography#gjn2008flairs-ardformal-submitted | |
| |
Nalepa, G. J., & Wojnicki, I. (2008). Towards Formalization of ARD+ Conceptual Design and Refinement Method. Paper presented at the FLAIRS2008. | |
| |
https://ai.ia.agh.edu.pl/wiki/hekate:bib:hekate_bibliography#gjn2008flairs-ardprolog-submitted | |
| |
Nalepa, G. J., & Wojnicki, I. (2008). An ARD+ Design and Visualization Toolchain Prototype in Prolog. Paper presented at the FLAIRS2008. | |
| |
**RDF:** | |
| |
http://www.w3.org/RDF/ | |
| |
If you want to learn about the Resource Description Format (RDF), you should read this primer. | |
| |
http://en.wikipedia.org/wiki/Resource_Description_Framework | |
| |
An explanation of RDF by Wikipedia. | |
| |
http://www.w3.org/TR/NOTE-rdf-simple-intro | |
| |
Lassila, Ora. Introduction to RDF Metadata, W3C., Note 1997-11-13 | |
| |
http://www.w3.org/RDF/FAQ | |
| |
Frequently asked Questions about RDF, W3C. | |
| |
http://www.ariadne.ac.uk/issue14/what-is | |
| |
An introductory explanation of RDF by Rachel Heery in Ariadne magazine online. | |
| |
http://www.rdfabout.com/intro/ | |
| |
http://www.xml.com/pub/a/2001/01/24/rdf.html | |
| |
http://xml.coverpages.org/rdf.html | |
| |
__The RDF tutorials__ : | |
| |
http://www.w3schools.com/rdf/default.asp | |
| |
http://www.zvon.org/xxl/RDFTutorial/General/book.html | |
| |
[[http://webdesign.about.com/gi/dynamic/offsite.htm?zi=1/XJ/Ya&sdn=webdesign&cdn=compute&tm=15&f=00&su=p284.8.150.ip_&tt=14&bt=0&bts=0&zu=http%3A//www710.univ-lyon1.fr/%7Echampin/rdf-tutorial/|RDF tutorial]] | |
| |
| |
| |
| |
**XSLT** : | |
* http://www.w3.org/Style/XSL/ | |
* http://zvon.org/xxl/XSLTutorial/Output/index.html | |
* http://w3schools.com/xsl/default.asp | |
* [[wp>XSLT]] | |
* http://www.w3.org/TR/xslt20/ | |
| |
| |
| |
FIXME | |
| |