To jest stara wersja strony!


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

080401

  • missed

080408

  • ???

080422

  • to co na 18.3.2008

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 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

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

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:

  • Presentation syntax
      author^^rif:local -> ?Author
      price^^rif:local -> 49^^xsd:integer
  • XML syntax
        <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.

  • 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_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 :

FIXME

pl/miw/miw08_ard_rdf.1207655379.txt.gz · ostatnio zmienione: 2019/06/27 15:58 (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