Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:miw:miw08_hml_rules:rdf [2008/04/25 23:02]
miw
pl:miw:miw08_hml_rules:rdf [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
-**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, orzeczenia oraz obiektu.+**[[http://​www.w3.org/​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, orzeczenia oraz obiektu. W RDF podmiot stanowi opisywany zasób, predykat określa jaka jego własność jest opisywana, zaś obiekt stanowi wartość tej własności. Podstawowym mechanizmem wykorzystywanym przez RDF do identyfikacji podmiotu, predykatu i obiektu jest URI. RDF stanowi model lub bazę danych, która jest reprezentowana w formie grafu. RDF/XML jest językiem XML-a, który może być użyty do reprezentacji danych RDF.
  
-**Serializacja do XML-a**+[[https://​ai.ia.agh.edu.pl/​wiki/​pl:​miw:​miw08_hml_rules:​rdf:​rdfexample|Kilka dodatkowych słów o RDF + atrybuty w RDF + przykład]]
  
-Zdanie: Ora Lassila is the creator of the resource http://www.w3.org/​Home/​Lassila., czyli: +Ważną cechą języka RDF jest to iż nie obsługuje on negacji oraz regułMożna to zaliczyć od jego wad gdyż systemy reprezentowania wiedzy potrzebują dwóch rodzajów negacji, mianowicie słabej negacji ~ (angweak negation) wyrażającej nieprawdę, silnej negacji (angstrong negation) wyrażającej jednoznacznie nieprawdziwe informacje lub błędnośćoraz oczywiście możliwości zapisu reguł. Aby temu zaradzić rozpoczęto prace nad nowym językiem **[[http://oxygen.informatik.tu-cottbus.de/rewerse-i1/?​q=ERDF|Extended RDF]]** oznaczonym jako **ERDF** (obecnie jest to tylko prototypowa implementacja w wersji 0.1). Język ten jest rozszerzeniem RDF'a o wyżej wspomniane negacje oraz reguły. Na ten czas skupię sie tylko na kwestiach związanych z rozszerzeniami RDF'a umożliwiającymi zapisywanie reguł gdyż to jest tematem projektu. W poniższym opisie oraz przykładach będę się posługiwał składnia XML:
-[http://www.w3.org/Home/Lassila[http://​description.org/​schema/​Creator] "Ora Lassila"​+
  
-<code xml> +Składnia reguł ERDF (ang.abstract syntax of ERDF Rules) zdefiniowana jest za pomocą poniższego diagramu (Rys.1)Reguły ERDF przybierają formę D <- A1,...,An, gdzie D jest opisem ERDF (ang.ERDF ​description) z możliwością negacji natomiast A1,...,An są atomami ERDF.
-<?xml version="​1.0"?>​ +
-<rdf:RDF +
-  xmlns:​rdf="​http://​www.w3.org/​1999/​02/​22-rdf-syntax-ns#"​ +
-  xmlns:​s="​http://​description.org/​schema/">​ +
-  <​rdf:​Description about="​http://​www.w3.org/​Home/​Lassila">​ +
-    <s:​Creator>​Ora Lassila</​s:​Creator>​ +
-  </​rdf:​Description>​ +
-</​rdf:​RDF>​ +
-</​code>​+
  
-Przestrzenie nazw w XML-u+{{:​pl:​miw:​miw08_hml_rules:​erdf.gif|:​pl:​miw:​miw08_hml_rules:​erdf.gif}}
  
-    ​instancja XMLa: zbiór znaczników i atrybutów (np. MathML, XHTML) +**Rys.1 ERDF-Rule Meta-Model**
-    ​każda instancja XML ma URI (jednoznaczne,​ nphttp://​bienkowski.net/​rower-ns#) +
-    ​w dokumencie używa się krótkich prefisków, np. rower:) +
-    ​rower:Kolo to skrót na http://​bienkowski.net/​rower-ns#​Kolo +
-    * deklaracja namespaców <root xmlns:​rower="​http://​bienkowski.net/​rower-ns#"/>​+
  
 +Termy ERDF są referencjami URI, identyfikatorami,​ zmiennymi lub literałami. Są one wyrażane na dwa sposoby, zależnie od ich występowania jako subject expression (z atrybutem erdf:about) lub jako value expression (rdf:​resource,​ rdf:nodeID lub erdf:​variable). ​
  
-Aby można było użyć RDF’a do przedstawiania reguł potrzebna jest wiedza jak zapisywać typowe dla nich elementyPrzykładowo w RDF ver. ??:+{{:​pl:​miw:​miw08_hml_rules:​gif_6.gif|:pl:​miw:​miw08_hml_rules:​gif_6.gif}}
  
-  ​wartosc logiczna: B+**Rys.2 ERDF-Term Meta-Model**
  
-<code xml>+Opisy ERDF są zapisywane jako elementy z atrybutem erdf:​Description. Każdy opis zawiera niepustą listę własności (mogą to być również negacje). ERDF descriptions,​ jak przedstawia Rys.2, rozbudowuje opisy RDF o opcjonalny atrybut erdf:​negationMode umożliwiający specyfikacje dwóch rodzajów negacji, oraz dopuszcza zmienne jako argumenty(subjectExpr i valueExpr).
  
-</​code>​+{{:​pl:​miw:​miw08_hml_rules:​gif_7.gif|:​pl:​miw:​miw08_hml_rules:​gif_7.gif}}
  
-  ​stałe argumenty20+**Rys.3 ERDF-Description Meta-Model** 
 + 
 +Na przykład: //Gerd knows Adrian, has some topic interest, but is not interested in the topic 'motor sports'//​ zapiszemy następująco:
  
 <code xml> <code xml>
 +<​erdf:​Description erdf:​about="#​Gerd">​ 
 +    <​foaf:​knows rdf:​resource="#​Adrian"/>​ 
 +    <​foaf:​topic_interest rdf:​nodeID="​x"/>​ 
 +    <​foaf:​topic_interest erdf:​negationMode="​Sneg"​ 
 +                        rdf:​resource="​urn:​topics:​motor_sports"/>​ 
 +</​erdf:​Description>​
 </​code>​ </​code>​
  
-  * suma: n+1+Inny przykład; ​suma w ERDF:
  
 <code xml> <code xml>
 +<​erdf:​DatatypePredicateAtom erdf:​predicate="​swrlb:​add">​ 
 +    <​erdf:​Variable>​ ?sum </​erdf:​Variable>​ 
 +    <​rdfs:​Literal rdf:​datatype="​xs:​int">​ 40 </​rdfs:​Literal>​ 
 +    <​rdfs:​Literal rdf:​datatype="​xs:​int">​ 40 </​rdfs:​Literal>​ 
 +</​erdf:​Description>​
 </​code>​ </​code>​
  
-  * różnican-1+Po to by wyrazić reguły ERDF za pomocą XML używamy języka reguł R2ML (REWERSE Rule Markup Language). 
 +Warto zauważyć że istnieje tutaj możliwość identyfikacji reguł poprzez nadawanie im ID. Szablon takiej reguły zamieszczam poniżej:
  
 <code xml> <code xml>
 +<​r2ml:​DerivationRule r2ml:​ruleID="​R1">​ 
 +    <​r2ml:​conditions>​ 
 +           <​erdf:​Description erdf:​about="​...">​ 
 +                ... 
 +           </​erdf:​Description>​  
 +    </​r2ml:​conditions>​ 
 +    <​r2ml:​conclusion>​ 
 +           <​erdf:​Description erdf:​about="​...">​ 
 +                ... 
 +           </​erdf:​Description>​  
 +    </​r2ml:​conclusion>​ 
 +</​r2ml:​DerivationRule>​
 </​code>​ </​code>​
  
-  * równość(wyr_1) ​(wartosc)+Teraz możemy spróbować zapisać nasz przykład ​(Jeżeli dzień=poniedziałek wtedy temp=20stza pomocą Extended RDF. 
  
 <code xml> <code xml>
 +<​r2ml:​DerivationRule r2ml:​ruleID="​R1">​ 
 +    <​r2ml:​conditions>​ 
 +           <​erdf:​Description erdf:​about="?​day">​ 
 +                <​rdf:​typr rdf:​resource="#​Monday"/>​ 
 +           </​erdf:​Description>​  
 +    </​r2ml:​conditions>​ 
 +    <​r2ml:​conclusion>​ 
 +           <​erdf:​Description erdf:​about="​temp">​ 
 +               <​rdfs:​Literal rdf:​datatype="​xs:​int">​ 20 </​rdfs:​Literal>​ 
 +           </​erdf:​Description>​  
 +    </​r2ml:​conclusion>​ 
 +</​r2ml:​DerivationRule>​
 </​code>​ </​code>​
  
-  * nierówność: ​ n > 0 
  
-<code xml> 
  
-</​code>​ 
  
-  * nierówność: ​ n <= 1+-------------------------------------------------------------------------------------------------------------------------------------------------------
  
-<code xml> 
  
-</code>+W czasie pracy nad ERDF natrafiłem również na nieco inny sposób zapisu reguł i faktów w RDF wykorzystujący [[http://​en.wikipedia.org/​wiki/​Notation_3|notacje N3]] (http://​www.ninebynine.org/​RDFNotes/​RDFFactsAndRules.html#​%5B4%5D). Poniżej krótko scharakteryzuje tą metodę:
  
-  ​suma logiczna ​: (wyr_1) and (wyr_2)+**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 jako
  
 <code xml> <code xml>
 +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 ]]] .
 +</​code>​
  
 +Resource który reprezentuje ten fakt jest konstruowany jak pokazano w tym przykładzie RDF/N3:
 +
 +<code xml>
 +[  rdf:type rul:Fact ;
 +   ​rul:​pred ex:pred ;
 +   ​rul:​args [ rdf:type rdf:List ;
 +              rdf:first ex:subj ;
 +              rdf:rest _:genid1 ] ] .
 </​code>​ </​code>​
  
-  ​warunek if : (conclusionif (conditions)+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 factsi faktów z nich wynikających ​(consequent facts) 
 + 
 +Reguła:  
 + 
 +       ​Afact1 & Afact2 & ... -> Cfact1 & Cfact2 & ...
  
 +jest reprezentowana w RDF, używając notacji N3, jako:
 <code xml> <code xml>
 +@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 ;
 +            ... ] .
 </​code>​ </​code>​
 +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#>:​
  
-  * funkcjefun_name(B)+  * 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 factssą 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:
 <code xml> <code xml>
 +@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 ]
 +</​code>​
 +gdzie: genid1, genid2, genid3, genid4 są identyfikatorami reprezentującymi „ogon” listy argumentów predykatu np. genid2 może być opisany jako:
 +<code xml>
 +_: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 ]] .
 </​code>​ </​code>​
 +**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:
  
-**RDF nie dostarcza środków do negacji ​(NOTczy alternatywy ​(OR).**+    parents?a, ?b, ?c 
 +    parents?b, ?d, ?e ) & 
 +    parents( ?c, ?f, ?g ) -> grandparents( ?a, ?d, ?e, ?f, ?g )
  
-Teraz możemy spróbować zapisać nasz przykład (Jeżeli dzień=poniedziałek wtedy temp=20stza pomocą RDFPrzedstawmy go w postaci:+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.
  
- temp = 20    if    day = monday+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.
  
-wówczas w RDF zapis bedzie wyglądał następująco:+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:
 <code xml> <code xml>
 +@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"​ .
 </​code>​ </​code>​
 +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.
  
-  ​Więcej na stronie domowej:  +**Całość therm w RDF/N3: ** [[pl:miw:miw08_hml_rules:​hekate_case_thermostat]]
-  * Szczególnie przydatne :  +
-  ​Więcej przykładów +
-  ​Polskie tłumaczenie specyfikacji RDFhttp://​www.geocities.com/​pan_andrew/​ResourceDescriptionFramework.htm +
  
 [[https://​ai.ia.agh.edu.pl/​wiki/​pl:​miw:​miw08_hml_rules|Powrót]] [[https://​ai.ia.agh.edu.pl/​wiki/​pl:​miw:​miw08_hml_rules|Powrót]]
 +
 +
 +====== 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
 +
 +**Strona domowa RDF** http://​www.w3.org/​RDF/​
 +
 +**Polskie tłumaczenie specyfikacji RDF** http://​www.geocities.com/​pan_andrew/​ResourceDescriptionFramework.htm
 +
 +**Strona domowa ERDF** http://​oxygen.informatik.tu-cottbus.de/​rewerse-i1/?​q=ERDF
 +
 +** Szczególnie przydatne** http://​oxygen.informatik.tu-cottbus.de/​IT/​Research/​ERDF-JAIR-2008.pdf
 +
pl/miw/miw08_hml_rules/rdf.1209157375.txt.gz · ostatnio zmienione: 2019/06/27 15:59 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0