Różnice

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

Odnośnik do tego porównania

pl:miw:miw08_ard_rdf [2008/09/16 23:10]
miw
pl:miw:miw08_ard_rdf [2019/06/27 15:50]
Linia 1: Linia 1:
-====== 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? 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
-===== 1. RIF(Rule Interchange Format) ===== 
- 
-RIF jest stworzonym przez W3C [[http://​www.w3.org/​|(Word Wide Web Consorcium)]] formatem reguł pozwalających na ich wymianę dla różnych języków reguł w sieciach semantycznych (RDF, OWL). Format RIF jest ciągle w fazie rozwoju, jedyne dostępne dokumenty są to szkice specyfikacji poszczególnych modułów (Working Draft). Do rozwijanych dokumentów należą m.in. [[http://​www.w3.org/​2005/​rules/​wg/​draft/​rif-fld/​|RIF Framework for Logic Dialects ]] oraz [[http://​www.w3.org/​2005/​rules/​wg/​draft/​rif-bld/​|RIF Basic Logic Dialect]] 
- 
-Dokładny opis specyfikacji RIF można znaleźć w projekcie [[https://​ai.ia.agh.edu.pl/​wiki/​pl:​miw:​miw08_xtt_rif|XTT_RIF]]. Z punktu widzenia projektu, jest wiedza jak zapisywać typowe dla reguł elementy tj: 
- 
-  * wartosc logiczna: np: B 
- 
-<code xml> 
-<Var> B </​Var>​ 
-</​code>​ 
- 
-  * stałe argumenty: np: 300 
- 
-<code xml> 
-<​arg><​Const type="​rds:​long">​ 300 </​Const></​arg>​ 
-</​code>​ 
- 
-  * suma: n+1 
- 
-<code xml> 
-<​Uniterm>​ 
-<​op><​Const type="​rif:​iri">​ op:​numeric-add </​Const></​op>​ 
-<​arg><​Const type="">​ 1 </​Const></​arg>​ 
-<​arg><​Var>​ n </​Var></​arg>​ 
-</​Uniterm>​ 
-</​code>​ 
- 
-  * różnica: n-1 
- 
-<code xml> 
-<​Uniterm>​ 
-<​op><​Const type="​rif:​iri">​ op:​numeric-subtract </​Const></​op>​ 
-<​arg><​Const type="">​ 1 </​Const></​arg>​ 
-<​arg><​Var>​ n </​Var></​arg>​ 
-</​Uniterm>​ 
-</​code>​ 
- 
-  * równość: (wyr_1) = (wartosc) 
- 
-<code xml> 
-<​Equal>​ 
-<arg> wyr_1 </​arg>​ 
-<arg> wartosc </​arg>​ 
-</​Equal>​ 
-</​code>​ 
- 
-  * nierówność: ​ n > 0 
- 
-<code xml> 
-<​Uniterm>​ 
-<​op><​Const type="​rif:​iri">​ op:​numeric-greater-than </​Const></​op>​ 
-<​arg><​Var>​ n </​Var></​arg>​ 
-<​arg><​Const type="​xsd:​decimal">​ 0 </​Const></​arg>​ 
-</​Uniterm>​ 
-</​code>​ 
- 
-  * nierówność: ​ n <= 1 
- 
-<code xml> 
-<​Uniterm>​ 
-<​op><​Const type="​rif:​iri">​ op:​numeric-less-or-equal-than </​Const></​op>​ 
-<​arg><​Var>​ n </​Var></​arg>​ 
-<​arg><​Const type="​xsd:​decimal">​ 0 </​Const></​arg>​ 
-</​Uniterm>​ 
-</​code>​ 
- 
-  * suma logiczna : (wyr_1) and (wyr_2) 
- 
-<code xml> 
-<And> 
-<​formula>​ 
-(wyr_1) 
-</​formula> ​ 
-<​formula>​ 
-(wyr_2) 
-</​formula>​ 
-</​And>​ 
-</​code>​ 
- 
-  * warunek if : (conclusion) if (conditions) 
- 
-<code xml> 
-<​Implies>​ 
-<if> 
-(conditions) 
-</if> 
-<​then>​ 
-(conclusion) 
-</​then>​ 
-</​Implies>​ 
-</​code>​ 
- 
-Teraz, na podstawie powyższej wiedzy, możemy spróbować zapisać za pomocą RIF przykład: ​ 
-<code xml> 
-Rule: 1    
-if     the day is Monday ​ 
-or     the day is Tuesday ​ or     the day is Wednesday ​ 
-or     the day is Thursday or     the day is Friday ​ 
-then   today is a workday 
-</​code>​ 
- 
-Wygląda on następująco:​ 
-<code xml> 
-<?xml version="​1.0"​ encoding="​UTF-8"?>​ 
-<Group xmlns="​http://​www.w3.org/​2007/​rif#">​ 
- <​sentence>​ 
-  <​Implies>​ 
-   <​if>​ 
-    <Or> 
-     <​formula>​ 
-      <​Equal>​ 
-       <​side><​Var>​dayofweek</​Var></​side>​ 
-       <​side><​Const type="​xsd:​string">​Monday</​Const></​side>​ 
-      </​Equal>​ 
-     </​formula>​ 
-     <​formula>​ 
-      <​Equal>​ 
-       <​side><​Var>​dayofweek</​Var></​side>​ 
-       <​side><​Const type="​xsd:​string">​Tuesday</​Const></​side>​ 
-      </​Equal>​ 
-     </​formula>​ 
-     <​formula>​ 
-      <​Equal>​ 
-       <​side><​Var>​dayofweek</​Var></​side>​ 
-       <​side><​Const type="​xsd:​string">​Wednesday</​Const></​side>​ 
-      </​Equal>​ 
-     </​formula>​ 
-     <​formula>​ 
-      <​Equal>​ 
-       <​side><​Var>​dayofweek</​Var></​side>​ 
-      <​side><​Const type="​xsd:​string">​Thursday</​Const></​side>​ 
-       </​Equal>​ 
-     </​formula>​ 
-     <​formula>​ 
-      <​Equal>​ 
-       <​side><​Var>​dayofweek</​Var></​side>​ 
-       <​side><​Const type="​xsd:​string">​Friday</​Const></​side>​ 
-      </​Equal>​ 
-     </​formula>​ 
-    </Or> 
-   </​if>​ 
-   <​then>​ 
-    <​Atom>​ 
-     <​op><​Const type="​rif:​iri">​thrm:​is-workday</​Const></​op>​ 
-     <​arg><​Var>​dayofweek</​Var></​arg>​ 
-    </​Atom>​ 
-   </​then>​ 
-  </​Implies>​ 
- </​sentence>​ 
-</​Group>​ 
-</​code>​ 
- 
-W analogiczny sposób możemy zapisać większość reguł. Przykładem może być tu całość [[https://​ai.ia.agh.edu.pl/​wiki/​hekate:​hekate_case_thermostat|HeKatE Case Thermostat]] którego reguły przedstawione w RIF wyglądają nastepująco:​ [[https://​ai.ia.agh.edu.pl/​wiki/​pl:​miw:​miw08_xtt_rif:​thermostat|therm in RIF]]. 
- 
- 
-===== 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: 
-  - **Podmiotu** (//ang. subject//). Podmiotem jest opisywany zasób reprezentowany przez URI. 
-  - **Orzeczenia** (predykatu) (//ang. predicate//​). Orzeczenie jest nazwą cechy lub relacji dotyczącej opisywanego podmiotu i podobnie jak podmiot jest reprezentowane przez URI. 
-  - **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|:​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. 
- 
-[[https://​ai.ia.agh.edu.pl/​wiki/​pl:​miw:​miw08_ard_rdf:​rdf:​rdfexample|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 
- 
-<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>​ 
- 
-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: 
-<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>​ 
-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: 
-<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>​ 
-**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: 
-<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>​ 
-  
-Linki: 
- 
-[[http://​www.ninebynine.org/​RDFNotes/​RDFFactsAndRules.html#​xtocid-7560072| Representing Facts and Rules in RDF]] 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
-===== OWL - Web Ontology Language ===== 
- 
-OWL jest językiem ze składnią opartą na XML, a semantyką opartą na tzw. logice deskrypcyjnej (ang. description logics). Stanowi on rozszerzenie [[https://​ai.ia.agh.edu.pl/​wiki/​pl:​miw:​miw08_hml_rules:​rdf|RDF (ang. Resource Description Framework)]]. Służy do reprezentacji i przetwarzania danych w sieci WWW. OWL umożliwia opisywanie danych w postaci ontologii i budowanie w ten sposób tzw. Semantycznego Internetu. OWL  posiada trzy podjęzyki o wzrastającej ekspresyjności:​ OWL Lite, OWL DL, and OWL Full. Zapis w języku OWL składa się z definicji ontologicznych metadanych (container),​ definicji ​ 
-relacji binarnych, pojęć, przykładów pojęć oraz aksjomatów definiujących omówione dodatkowe ​ 
-właściwości pojęć i relacji. 
- 
-Ponieważ OWL posiada pewne ograniczenia - nie można uchwycić złożonych relacji pomiędzy zdefiniowanymi właściwościami (chociażby ogólnie znany przykład "​uncle"​) - powstała idea rozszerzenia OWL'a o pewne formy regułowe przy jednoczesnym zachowaniu maksymalnej kompatybilności z istniejącą składnią i semantyką OWL.  
- 
-Obecnie istnieje propozycja języka **[[http://​www.daml.org/​2003/​11/​swrl/​|SWRL - Semantic Web Rule Language]]** (początkowo nazwany ORL - OWL Rules Language) opartego na połączeniu podjęzyków OWL DL i OWL Lite języka OWL z fragmentami języka [[https://​ai.ia.agh.edu.pl/​wiki/​pl:​miw:​miw08_hml_rules:​ruleML|RuleML (Rule Markup Language)]]. Propozycja ta rozszerza zbiór aksjomatów zapisanych w języku OWL tak, aby obejmował reguły mające postać klauzul. Pozwala to łączyć takie reguły z bazą wiedzy zapisaną w języku OWL. Proponowane reguły mają postać implikacji pomiędzy poprzednikiem (ciałem) i następnikiem (nagłówkiem). Poprzednik i następnik mogą być zbudowane z koniunkcji atomów, pojedynczego atomu albo być puste. (Wiadomo, że regułę zawierającą koniunkcję w następniku można przekształcić w zestaw reguł zawierających tylko jeden atom w następniku). Reguła ma następujące znaczenie: jeśli warunki podane w poprzedniku zachodzą, to warunki podane w następniku także muszą zachodzić. Pusty poprzednik jest traktowany jako trywialnie prawdziwy, a pusty następnik jako trywialnie fałszywy. Atomy w regułach mogą być postaci C(x), P(x,y), sameAs(x,y) lub differentFrom(x,​y),​ gdzie C jest deskrypcją pojęcia języka OWL, P jest własnocią,​ a x,y są albo zmiennymi, albo indywiduami,​ albo wartościami danych. 
- 
-W tzw. Human Readable Syntax czyli składni bardziej czytelnej człowiekowi reguły przyjmują formę: 
- 
-<code xml> 
-antecedent -> consequent ​  ​czyli ​  ​poprzednik -> następnik 
-</​code>​ 
- 
-gdzie zarówno antecedent jak i consequent składają się ze zbioru atomów a1 ^ a2 ^ ... ^ an. Zmienne są zaznaczane przy użyciu standardowej konwencji prefixowania ich znakiem zapytania (np.?x). Korzystając z tej składni reguła ​ stwierdzająca że połączenie własności '​parent'​ i '​brother'​ da nam własność '​uncle'​ może być zapisana następująco:​ 
- 
-<code xml> 
-parent(?​a,?​b) ^ brother (?b,?c) -> uncle(?​a,?​c) 
-</​code>​ 
- 
-czyli jeśli Mary jest rodzicem Johna i Bill jest bratem Mary, to ta reguła wymaga by Bill był wujkiem Johna. ​ 
- 
-Indywidua są zaznaczane za pomocą ich nazw w OWL. Przykładem indywiduum może być '​Fred'​ lub '​Mary'​. Przykład reguły w SWRL określającej własność hasBrother, korzystającej z indywiduum :  ​ 
- 
-<code xml> 
-Person(Mary) ^ hasSibling(Mary,​ Fred) ^ Male(Fred) -> hasBrother(Mary,​ Fred) 
-</​code>​ 
- 
-Podstawowe typy takie jak integer, long, float czy double są określane za pomocą XML Schema datatypes. Wartości typu Boolean czyli prawda i fałsz są przedstawiane za pomocą vartości "​true"​ i "​false"​. Przykłady literałów:​ 
-<code xml> 
-34    ​ 
-4.45    ​ 
--34    ​ 
-True    
-false      ​ 
-"a literal" ​   
-</​code>​ 
-Wszystkie typy danych muszą być poprzedzone prefixem przestrzeni nazw '​xsd:',​ np: 
-<code xml> 
-xsd:​unsignedInt ​   ​ 
-xsd:​string ​   ​ 
-</​code>​ 
-Nie wszystkie typy danych XML Schema są obecnie obsługiwane. Do tych wpieranych zaliczamy ​ xsd:int, xsd:short, xsd:long, xsd:​boolean,​ xsd:float, xsd:double, xsd:string, xsd:time, xsd:anyURI, xsd:​base64Binary,​ xsd:​xsd:​byte,​ xsd:​duration,​ xsd:​dateTime,​ oraz xsd:date. 
- 
-Literały mogą być sprecyzowane typem danych przez poprzedzenie ich parą "​^^"​ oraz nazwą typu danej, np:  
-<code xml> 
-34^^xsd:​unsignedInt ​ 
-"a literal"​^^xsd:​string 
-</​code>​ 
- 
-Jedną z najważniejszych cech SWRL jest możliwość korzystania z  zdefiniowanych przez użytkownika predykatów. Predykaty te mogą pobierać jeden lub więcej argumentów i ocenić prawdę jeśli argumenty te odpowiadają predykatowi. Na przykład predykat '​równości'​ może być zdefiniowany tak by przyjmować dwa argumenty i zwracać true jeśli te argumenty są takie same. Duża liczba typowych predykatów wykonujących operacje matematyczne oraz operacje na stringach zawarte są w SWRL Built-in Submission. 
- 
-Przykład reguły SWRL korzystającej z wbudowanego predykatu by stwierdzić że osoba z wiekiem większym niż 17 jest osobą dorosłą: 
-<code xml> 
-Person(?p) ^ hasAge(?p, ?age) ^ swrlb:​greaterThan(?​age,​ 17) -> Adult(?​p) ​ 
-</​code>​ 
- 
-Dla zachowania konwencji predykaty zawarte w SWRL poprzedzane są prefixem swrlb. 
-<code xml> 
-Person(?p) ^ hasNumber(?​p,​ ?number) ^ swrlb:​startsWith(?​number,​ "​+"​) -> hasInternationalNumber(?​p,​ true)  
-</​code>​ 
- 
-W SWRL negacja nie jest możliwa, czyli poniższa reguła jest błędem: 
-<code xml> 
-Person(?p) ^ ¬ hasCar(?p, ?c) -> CarlessPerson(?​p) 
-</​code>​ 
- 
-Więcej informacji oraz odpowiedzi na najczęściej zadawane pytania odnośnie SWRL: http://​protege.cim3.net/​cgi-bin/​wiki.pl?​SWRLLanguageFAQ 
- 
-Teraz kilka słów o SWRL zapisywanym w XML Presentation Syntax. 
- 
-  * **owlr** - prefix przestrzeni nazw dla nowo przedstawianej składni (**swrlx** w innych opracowaniach) 
-  * **owlx** - prefix przestrzeni nazw http://​www.w3.org/​2003/​05/​owl-xml ​ 
- 
-Deklaracje zmiennych są zdaniami wskazującymi by dany URI był używany jako zmienna. Na przykład: 
- 
-<code xml> 
-<​owlr:​Variable owlr:​name="​x1"/>​ 
-</​code>​ 
- 
-Aksjomaty reguł posiadają poprzedników (owlr:​antecedent) oraz następników (owlr:​consequent),​ które są listami atomów tworzonych z klas, predykatów,​ równości i nierówności. Na przykład: 
- 
-<code xml> 
-<​owlr:​classAtom>​ 
-    <​owlx:​Class owlx:​name="​Person"/>​ 
-    <​owlr:​Variable owlr:​name="​x1"/>​ 
-</​owlr:​classAtom>​ 
-</​code>​ 
- 
-jest atomem klasy używającym nazwy //Person//, natomiast: 
- 
-<code xml> 
-<​owlr:​classAtom>​ 
-    <​owlx:​IntersectionOf>​ 
-        <​owlx:​Class owlx:​name="​Person"/>​ 
-        <​owlx:​ObjectRestriction owlx:"​hasParent"/>​ 
-              <​owlx:​someValuesFrom owlx:​class="​Physician"/>​ 
-        <​owlx:​ObjectRestriction/>​ 
-    <​owlx:​IntersectionOf>​ 
-    <​owlr:​Variable owlr:​name="​x2"/>​ 
-</​owlr:​classAtom>​ 
-</​code>​ 
- 
-jest atomem klasy używającym opis reprezentujący osobę('​Person'​) mającą przynajmniej jednego rodzica, który jest lekarzem('​Physician'​) 
- 
-//​PropertyAtom//​ zawiera atrybut //name// oraz dwa elementy które mogą być zmiennymi, indywiduami,​ albo wartościami danych. Na przykład: 
- 
-<code xml> 
-<​owlr:​datavaluedPropertyAtom owlr:​property="​grade">​ 
-    <​owlr:​Variable owlr:​name="​x1">​ 
-    <​owlx:​DataValue rdf:​datatype="&​xsd:​integer">​4</​owlx:​DataValue>​ 
-</​owlr:​datavaluedPropertyAtom>​ 
-</​code>​ 
- 
-Na koniec jeszcze przykład atomu wskazującego równość (nierówność) pomiędzy zbiorami indywiduów i nazwami zmiennych. 
- 
-<code xml> 
-<​owlr:​sameIndividualAtom>​ 
-    <​owlr:​Variable owlr:​name="​x1"/>​ 
-    <​owlr:​Variable owlr:​name="​x2"/>​ 
-    <​owlx:​Individual owlx:​name="​Clinton"/>​ 
-    <​owlx:​Individual owlx:​name="​Bill_Clinton"/>​ 
-</​owlr:​sameIndividualAtom>​ 
-</​code>​ 
- 
-Przykład zapisu zdania : jeżeli dzień=poniedziałek wtedy temp=20st za pomocą SWRL: 
- 
-<code xml> 
-monday(?​day) -> temp(20)  ​ 
-</​code>​ 
- 
-w składni XML: 
- 
-<code xml> 
-<​owlx:​Rule>​ 
-    <​owlr:​antecedent>​ 
-        <​owlr:​individualPropertyAtom owlr:​property="​monday">​ 
-            <​owlr:​Variable owlr:​name="​day"/>​ 
-        </​owlr:​individualPropertyAtom>​ 
-    </​owlr:​antecedent>​ 
-    <​owlr:​consequent>​ 
-        <​owlr:​datavaluedPropertyAtom owlr:​property="​temp">​ 
-            <​owlx:​DataValue rdf:​datatype="&​xsd:​integer">​20</​owlx:​DataValue>​ 
-        </​owlr:​datavaluedPropertyAtom>​ 
-    </​owlr:​consequent>​ 
-</​owlx:​Rule>​ 
-</​code>​ 
- 
-=====ARD w RDF===== 
- 
-Proponaowane rozwiązanie:​ 
- 
-<code xml> 
-<?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>​ 
-</​code>​ 
- 
-i przykład: 
- 
-<code xml> 
-<?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>​ 
-</​code>​ 
- 
-Poniżej przedstawiono inny przykład zapisu ARD w RDF za pomocą biblioteki DublinCore: 
-<code xml> 
-<?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>​ 
-</​code>​ 
- 
- 
- 
- 
- 
- 
-====== Sprawozdanie ====== 
- 
- 
- 
-====== Materiały ====== 
- 
-[[hekate:​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 
- 
-[[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 
  
pl/miw/miw08_ard_rdf.txt · ostatnio zmienione: 2019/06/27 15:50 (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