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

Resource Description Framework (RDF) jest podstawowym językiem używanym do zapisu informacji w Sieci Semantycznej i przeznaczonym do przetwarzania maszynowego. Każdy dokument RDF może być zakodowany w postaci dokumentu XML, więc istnieje możliwość łatwej jego wizualizacji.

W dosłownym tłumaczeniu RDF jest środowiskiem do opisu zasobów. Zacząć trzeba więc od wyjaśnienia co jest rozumiane przez jego twórców pod pojęciem zasobu. Otóż jako zasób można rozumieć nie tylko dowolny obiekt znajdujący się w sieci ale również pojęcia abstrakcyjne, relacje i obiekty fizyczne. Zasoby są w RDF reprezentowane przez wspomniane powyżej zunifikowane identyfikatory zasobów (ang. Uniform Resource Identifier, URI). URI jest pojęciem szerszym niż popularnie używane identyfikatory lokalizacji zasobów (ang. Uniform Resource Locator, URL). URL opisuje zasób, który musi być fizycznie dostępny w Internecie (jak strona WWW, plik na serwerze FTP) i jest szczególnym przypadkiem URI. URI może opisywać dowolny obiekt, niezależnie od tego, czy znajduje się on w Internecie czy nie. Przykładowo przy pomocy URI możemy reprezentować osobę przez nadanie jej identyfikatora URI będącego jej adresem e-mail, adresem jej domowej strony WWW lub innym identyfikatorem nadanym przez pewną organizację pozwalającym w sposób jednoznaczny zidentyfikować daną osobę.

Do opisu zasobów używa się tzw. stwierdzeń (ang. statements). Często zamiennie z terminami zdanie i stwierdzenie używane jest jeszcze określenie trójka (ang. triple). To ostatnie określenie wynika z faktu, że każde stwierdzenie w RDF ma strukturę podobną do prostego zdania w języku naturalnym i składa się z trzech elementów:

  1. Podmiotu (ang. subject). Podmiotem jest opisywany zasób reprezentowany przez URI.
  2. Orzeczenia (predykatu) (ang. predicate). Orzeczenie jest nazwą cechy lub relacji dotyczącej opisywanego podmiotu i podobnie jak podmiot jest reprezentowane przez URI.
  3. Obiektu (ang. object). Obiektem może być inny zasób (reprezentowanyprzez URI) lub stała wartość określana mianem literału (ang. literal ).

Najczęściej mamy do czynienia z jedną z dwóch sytuacji - opisujemy relację między dwoma zasobami (wtedy obiektem jest URI reprezentujące zasób) lub mówimy, że podmiot ma jakąś cechę o zadanej wartości (wtedy używamy literału). Literał reprezentować może dowolną wartość o ile daje się ona zapisać w postaci ciągu znaków. W RDF literałami mogą być tylko obiekty, nie jest możliwe ich użycie w charakterze podmiotu czy orzeczenia.Każde zdanie można uważać za etykietowany graf skierowany.

:pl:miw:1.gif

Rys.1 Graf przedstawiajacy dwa zdania RDF.

Podmiot i obiekt są węzłami takiego grafu, natomiast orzeczenie jest reprezentowane jako krawędź skierowana od węzła podmiotu do węzła obiektu i etykietowana przy pomocy URI orzeczenia. Przy rysowaniu grafów wizualizujących dane zapisane w RDF przyjęło się używanie owali do oznaczania węzłów, które są zasobami (są reprezentowane przez URI). Obiekty będące literałami są natomiast reprezentowane przez prostokąty.

Bardziej rozbudowany przykład zapisu w RDF

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

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

Linki:

Representing Facts and Rules in RDF

ARD w RDF

Proponaowane rozwiązanie:

<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xml:base="http://example.org"
>
	<rdf:Description rdf:ID="ard:Attribute">
		<rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
	</rdf:Description>
 
	<rdf:Property rdf:ID="ard:Property">
		<rdfs:domain rdf:resource="#ard:Attribute1"/>
		<rdfs:range rdf:resource="#ard:Attribute2"/>
	</rdf:Property>
 
</rdf:RDF>

i przykład:

<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xml:base="http://example.org"
>
	<rdf:Description rdf:ID="Thermostat">
		<rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
	</rdf:Description>
 
	<rdfs:Class rdf:ID="Time">
		<rdfs:subClassOf rdf:resource="#Thermostat"/>
	</rdfs:Class>
 
	<rdf:Property rdf:ID="is_attribute_of">
		<rdfs:domain rdf:resource="#Time"/>
		<rdfs:range rdf:resource="#Thermostat"/>
	</rdf:Property>
</rdf:RDf>

Poniżej przedstawiono inny przykład zapisu ARD w RDF za pomocą biblioteki DublinCore:

<?xml version="1.0"?>
<rdf:RDF
  xmlns:rdf="http://www.w3.org/TR/WD-rdf-syntax#"
  xmlns:dc="http://purl.org/dc/elements/1.0/"
  xmlns:dcq="http://purl.org/dc/qualifiers/1.0/">
  <rdf:Description about="http://www.thermostat.org/Thermostate">
    <dc:Relation>
      <rdf:Description>
        <dcq:RelationType
	  rdf:resource="http://purl.org/dc/vocabularies/RelationTypes/v1.0/IsReferencedBy"/>
        <rdf:value resource="http://www.thermostat.org/Time"/>
      </rdf:Description>
    </dc:Relation>
    <dc:Relation>
      <rdf:Description>
        <dcq:RelationType
	  rdf:resource="http://purl.org/dc/vocabularies/RelationTypes/v1.0/IsReferencedBy"/>
        <rdf:value resource="http://www.thermostat.org/Temperature"/>
      </rdf:Description>
  </rdf:Description>
</rdf:RDF>

Sprawozdanie

Materiały

hekate_case_thermostat

ARD:

https://ai.ia.agh.edu.pl/wiki/hekate:bib:hekate_bibliography#gjn2008flairs-userv

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

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

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