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 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:
Styl 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>
Nasz przykład zapisany w 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>
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:
Representing Facts and Rules in RDF
http://agentlab.swps.edu.pl/agent_papers/Gasiorowski_MS_2006.pdf
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)
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 Presentation syntax :
nazwa_atrybutu->wartość_atrybutu^^type
Sposób przedstawiania atrybutów w XML syntax:
<slot><Const>nazwa_atrybutu</Const><Var type=””>wartość_atrybutu</Var></slot>
Przykład:
author^^rif:local -> ?Author
price^^rif:local -> 49^^xsd:integer
<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>
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.
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]
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
RDF tutorial
XSLT :