Dodatkowe możliwości RDF. Seminarium magisterskie Paweł Chrząszczewski



Podobne dokumenty
Marcin Skulimowski - RDF

RDF (Resource Description Framework)

Język RDF. Mikołaj Morzy Agnieszka Ławrynowicz. Instytut Informatyki Poznań, rok akademicki 2013/2014

Zastosowanie ontologii do organizacji informacji pozyskiwanych z Internetu

Sprawozdanie z laboratorium 2: Modeling knowledge with Resource Description Framework (RDF)

rdf:type ex:homepage ex:createdwith /amaya rdf:type ex:htmleditor

Spis treści Informacje podstawowe Predykaty Przykłady Źródła RDF. Marek Prząda. PWSZ w Tarnowie. Tarnów, 6 lutego 2009

RDF Schema (schematy RDF)

Standardy semantyczne

Krzysztof Kutt Sprawozdanie 2: Modeling knowledge with Resource Description Framework (RDF)

Filtr RDF dla systemu Odra

DTD - encje ogólne i parametryczne, przestrzenie nazw

Na podstawie artykułu:

Zasady Nazewnictwa. Dokumentów XML Strona 1 z 9

MINISTERSTWO SPRAW WEWNĘTRZNYCH I ADMINISTRACJI DEPARTAMENT INFORMATYZACJI

29. Poprawność składniowa i strukturalna dokumentu XML

Semantic Web. Grzegorz Olędzki. prezentacja w ramach seminarium Protokoły komunikacyjne. luty 2005

Aby przejść do edycji w tym module należy wybrać zakładkę "Dla Pracowników" -> "Sprawdziany".

Złożone komponenty JSF wg

SUM Edukacja Techniczno Informatyczna Języki i Systemy Programowania. Wykład 2. dr Artur Bartoszewski - WYKŁAD: Języki i Systemy Programowania,

LABORATORIUM 5 WSTĘP DO SIECI TELEINFORMATYCZNYCH WPROWADZENIE DO XML I XSLT

Dokument poprawnie sformułowany jest zgodny z ogólnymi zasadami składniowymi:

Opis protokołu komunikacji programu mpensjonat z systemami zewnętrznymi (np. rezerwacji online)

Bazy Danych. C. J. Date, Wprowadzenie do systemów baz danych, WNT - W-wa, (seria: Klasyka Informatyki), 2000

Wprowadzenie do technologii XML

Bazy danych. Zachodniopomorski Uniwersytet Technologiczny w Szczecinie. Wykład 3: Model związków encji.

Internet Semantyczny. Schematy RDF i wnioskowanie

Zagadnienia (1/3) Data-flow diagramy przepływów danych ERD diagramy związków encji Diagramy obiektowe w UML (ang. Unified Modeling Language)

Wykład 11a. Składnia języka Klasycznego Rachunku Predykatów. Języki pierwszego rzędu.

SAS Institute TECHNICAL SUPPORT )

Backend Administratora

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

Klasy abstrakcyjne i interfejsy

Technologie Sieci Semantycznych

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.

Autor: dr inż. Katarzyna Rudnik

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

Wykład 8: klasy cz. 4

Systemy baz danych. mgr inż. Sylwia Glińska

Metodyki i techniki programowania

Model semistrukturalny

Świat rzeczywisty i jego model

Metodyki i techniki programowania

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe

Nowe funkcje w programie Forte Finanse i Księgowość

Diagramy klas. dr Jarosław Skaruz

Komunikacja i wymiana danych

Zachodniopomorski Uniwersytet Technologiczny w Szczecinie. Bazy danych. Wykład 4: Model SERM. dr inż. Magdalena Krakowiak

WPROWADZENIE DO BAZ DANYCH

Nowe funkcje w programie Symfonia Finanse i Księgowość

Złożone komponenty JSF wg

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Procesowa specyfikacja systemów IT

Krzysztof Kadowski. PL-E3579, PL-EA0312,

Od metadanych do map wiedzy

< K (2) = ( Adams, John ), P (2) = adres bloku 2 > < K (1) = ( Aaron, Ed ), P (1) = adres bloku 1 >

Internet Semantyczny i Logika I

Bazy danych TERMINOLOGIA

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut.

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania

Jacek Tomaszczyk Instytut Bibliotekoznawstwa i Informacji Naukowej Uniwersytet Śląski

Kurs WWW Język XML, część I

Typy, klasy typów, składnie w funkcji

Baza danych sql. 1. Wprowadzenie. 2. Repozytaria generyczne

Tworzenie warstwy zasobów projektowanie metodą strukturalną

10. Translacja sterowana składnią i YACC

Rozdział VI. Tabele i ich możliwości

INFORMATYKA TECHNICZNA Badanie możliwości wykorzystania interfejsu automatyzacji OLE w systemie CAx

Modele danych walidacja widoki zorientowane na model

Laboratorium 9 (Więcej Aktywności, w Androidzie)

rk HTML 4 a 5 różnice

Tabela wewnętrzna - definicja

Kurs walut. Specyfikacja projektu. Marek Zając

programu Neofon instrukcja obsługi Spis treści

Wykład II Encja, atrybuty, klucze Związki encji. Opracowano na podstawie: Podstawowy Wykład z Systemów Baz Danych, J.D.Ullman, J.

Diagramy ERD. Model struktury danych jest najczęściej tworzony z wykorzystaniem diagramów pojęciowych (konceptualnych). Najpopularniejszym

STL Standardt Template Library (wprowadzenie)

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

0.1. Diagram klas i pakietów

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

KS-ZSA. Mechanizm centralnego zarządzania rolami

Informatyka Ćwiczenie 10. Bazy danych. Strukturę bazy danych można określić w formie jak na rysunku 1. atrybuty

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Ćwiczenie rozpocznie się od wprowadzenia do laboratorium, po którym omówimy składnię ę polecenia INSERT pozwalającego ą na wstawianie krotek do

Projektowanie Zorientowane na Dziedzinę. ang. Domain Driven Design

XML Schema. Bartłomiej Świercz. Łódź, 19 listopada 2005 roku. Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz XML Schema

Przypisywanie bibliotek w architekturze SAS

Zaawansowane programowanie w C++ (PCP)

Sprawdzenie i ocena pracy z wykorzystaniem Archiwum Prac Dyplomowych

Szkolenie systemu POL-on

Zaawansowane Modelowanie I Analiza Systemów Informatycznych

Technologie i systemy oparte na logice rozmytej

Analiza i programowanie obiektowe 2016/2017. Wykład 6: Projektowanie obiektowe: diagramy interakcji

Zasady budowy i przekazywania komunikatów XML w systemie kdpw_otc

Język UML w modelowaniu systemów informatycznych

Formatowanie tekstu przy uz yciu stylo w

3. Wymagania wstępne w zakresie wiedzy, umiejętności i kompetencji społecznych Wiedza

Wykorzystanie standardów serii ISO oraz OGC dla potrzeb budowy infrastruktury danych przestrzennych

Transkrypt:

Dodatkowe możliwości RDF Seminarium magisterskie Paweł Chrząszczewski

Inne możliwości RDF RDF posiada szereg dodatkowych funkcji, takich jak wbudowane typy i właściwości reprezentujące grupy zasobów i stwierdzeń RDF dotyczących wielu różnych zasobów traktowanych jako całość. Często istnieje potrzeba opisania grupy rzeczy np. pokazania że książka została napisana przez kilku autorów lub stworzenia listy studentów zapisanych na jakiś kurs.

Kontenery RDF / RDF Containers Język RDF posiada udogodnienia do opisu grup obiektów. W terminologii RDF do przypisywania zasobom grup obiektów używamy jednego z trzech typów kontenerów (ang. containers), zależnie od wzajemnych relacji miedzy elementami grupy. W języku RDF istnieją trzy rodzaje kontenerów:

Kontenery RDF / RDF Containers Worek (ang. bag, znacznik rdf:bag) Sekwencja (ang. sequence, znacznik rdf:seq) Alternatywa (ang. alternative, znacznik rdf:alt) Należy przy tym zauważyć, ze to po stronie aplikacji leży odpowiedzialność za prawidłowe wykorzystanie znaczników opisujących kontenery, gdyż sam RDF definiuje jedynie typy i predykaty, których można użyć do konstrukcji kontenerów przechowujących zasoby.

Rdf:Bag Worek (ang. bag, znacznik rdf:bag) jest najprostszym kontenerem. Nazwa dobrze oddaje charakter i przeznaczenie tego kontenera, obiekty są do niego wrzucane jak do worka. Kontener ten zawiera nieuporządkowaną listę zasobów (lub literałów) w której poszczególne elementy mogą się powtarzać. Element <rdf:bag> może zawierać zduplikowane wartości Stosujemy go np. do opisu grupy

rdf:bag Przykład 1 <?xml version="1.0"?> <rdf:rdf xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:intrdf="http://www.semantict.net/rdf/intrordf/elements#" xml:base="http://www.semantict.net/rdf/"> <rdf:description rdf:about="spis.html"> <intrdf:ksiazki> <rdf:bag> <rdf:li rdf:resource="semanticweb.pdf"/> <rdf:li rdf:resource="rdf.pdf"/> <rdf:li rdf:resource="owl.pdf"/> </rdf:bag> </intrdf:ksiazki> </rdf:description> </rdf:rdf>

rdf:bag Graf 1 Gdzie: 1 - http://www.w3.org/1999/02/22-rdf-syntax-ns#bag 2 - http://www.semantict.net/rdf/semanticweb.pdf 3 - http://www.semantict.net/rdf/rdf.pdf 4 - http://www.semantict.net/rdf/owl.pdf

rdf:bag Jeżeli kontener zawiera literały zamiast zasobów wówczas każdy element jest określony następująco <rdf:li>internet Semantyczny</rdf:li> Zamiast elementów rdf:li możemy użyć elementów postaci rdf:_n gdzie n jest liczbą.

rdf:bag Przykład 2 <?xml version="1.0"?> <rdf:rdf xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:intrdf="http://www.semantict.net/rdf/intrordf/elements#" xml:base="http://www.semantict.net/rdf/"> <rdf:description rdf:about="spis.html"> <intrdf:ksiazki> <rdf:bag> <rdf:_1 rdf:resource="semanticweb.pdf"/> <rdf:_2 rdf:resource="rdf.pdf"/> <rdf:_3 rdf:resource="owl.pdf"/> </rdf:bag> </intrdf:ksiazki> </rdf:description> </rdf:rdf>

rdf:bag Elementy rdf:_n i rdf:li można użyć jednocześnie przy czym liczba n nie ma wpływu na numerację w grafie związaną z rdf:li.

rdf:bag Przykład 3 <?xml version="1.0"?> <rdf:rdf xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:intrdf="http://www.semantict.net/rdf/intrordf/elements#" xml:base="http://www.semantict.net/rdf/"> <rdf:description rdf:about="spis.html"> <intrdf:ksiazki> <rdf:bag> <rdf:li rdf:resource="semanticweb.pdf"/> <rdf:_5 rdf:resource="rdf.pdf"/> <rdf:li rdf:resource="owl.pdf"/> </rdf:bag> </intrdf:ksiazki> </rdf:description> </rdf:rdf>

rdf:bag Graf 3 Gdzie: 1 - http://www.w3.org/1999/02/22-rdf-syntax-ns#bag 2 - http://www.semantict.net/rdf/semanticweb.pdf 3 - http://www.semantict.net/rdf/rdf.pdf 4 - http://www.semantict.net/rdf/owl.pdf

rdf:seq Sekwencja (ang. sequence, znacznik rdf:seq) służy do reprezentowania listy obiektów tzn. zawiera uporządkowaną listę zasobów (lub literałów) w której poszczególne elementy mogą się powtarzać. A zatem w tym przypadku kolejność odgrywa role i jest określana za pomocą elementu rdf:_n widocznym na grafie. Wartość tego atrybutu związana jest z kolejnością elementów listy.

rdf:seq Przykład 1 <?xml version="1.0"?> <rdf:rdf xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:intrdf="http://www.semantict.net/rdf/intrordf/elements#" xml:base="http://www.semantict.net/rdf/"> <rdf:description rdf:about="spis.html"> <intrdf:ksiazki> <rdf:seq> <rdf:li rdf:resource="semanticweb.pdf"/> <rdf:li rdf:resource="rdf.pdf"/> <rdf:li rdf:resource="owl.pdf"/> </rdf:seq> </intrdf:ksiazki> </rdf:description> </rdf:rdf>

rdf:seq Przykład 2 W dokumencie RDF/XML możemy użyć elementy rdf:_n. <?xml version="1.0"?> <rdf:rdf xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:intrdf="http://www.semantict.net/rdf/intrordf/elements#" xml:base="http://www.semantict.net/rdf/"> <rdf:description rdf:about="spis.html"> <intrdf:ksiazki> <rdf:seq> <rdf:_1 rdf:resource="semanticweb.pdf"/> <rdf:_2 rdf:resource="rdf.pdf"/> <rdf:_3 rdf:resource="owl.pdf"/> </rdf:seq> </intrdf:ksiazki> </rdf:description> </rdf:rdf>

rdf:alt Alternatywa (ang. alternative, znacznik rdf:alt) służy do reprezentowania grupy obiektów, które są wartościami alternatywnymi (np. w metadanych opisujących plik na serwerze FTP może znaleźć się lista serwerów lustrzanych, na których również znajduje się ten plik). Musi on zawierać przynajmniej jeden element będący wartością domyślną (pierwszy element listy).

rdf:alt Przykład 1 <?xml version="1.0"?> <rdf:rdf xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:intrdf="http://www.semantict.net/rdf/intrordf/elements#" xml:base="http://www.semantict.net/rdf/"> <rdf:description rdf:about="kurs.html"> <intrdf:prowadzi> <rdf:alt> <rdf:_1 rdf:resource="11234"/> <rdf:_2 rdf:resource="34567"/> </rdf:alt> </intrdf:prowadzi> </rdf:description> </rdf:rdf> W powyższym przykładzie wykład prowadzi osoba o identyfikatorze 11234 lub osoba o identyfikatorze 34567.

Kolekcje W przeciwieństwie do kontenerów kolekcja zawiera skończoną liczbę elementów z zaznaczonym elementem ostatnim. W dokumentach RDF/XML kolekcja jest zdefiniowana przez atrybut rdf:parsetype="collection". Kolekcje RDF są używane do opisu grup, które mogą zawierać tylko określonych członków Ponadto kiedy jeden graf może opisywać niektórych z członków nie możemy wykluczyć że istnieje gdzieś inny graf który opisuje dodatkowych członków.

Kolekcje Opisane w poprzednim punkcie kontenery maja strukturę otwarta tzn. nie można wyspecyfikować pewnej liczby obiektów i stwierdzić, że są to już wszystkie elementy danego kontenera. W szczególności zdania opisujące zawartość kontenera mogą się pojawiać w wielu miejscach grafu. Dlatego RDF udostępnia strukturę kolekcji (ang. collection). Budowę kolekcji omówię na przykładzie. Rozważmy sytuacje, w której opisujemy pojęcia związane z grafika. Chcemy wyspecyfikować trzy barwy jako podstawowe: czerwona, zielona i niebieska. Możemy do tego celu użyć kolekcji.

Kolekcje Przykład 1 <?xml version="1.0"?> <rdf:rdf xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:intrdf="http://www.semantict.net/rdf/intrordf/elements#" xml:base="http://www.semantict.net/rdf/"> <rdf:description rdf:about="http://example.org/graphics"> <ex:primaries rdf:parsetype="collection"> <rdf:description rdf:about="http://example.org/graphics#red"/> <rdf:description rdf:about="http://example.org/graphics#green"/> <rdf:description rdf:about="http://example.org/graphics#blue"/> </ex:primaries> </rdf:description> </rdf:rdf>

Kolekcje Kolekcja jest reprezentowana w RDF jako lista z nazewnictwem i strukturami zaczerpniętymi z języka programowania Lisp. Węzły tej listy są puste, z każdego wychodzą dwie krawędzie. Jedna, etykietowana rdf:first wskazuje na węzeł w którym przechowywany jest klucz (czyli element kolekcji). Druga, etykietowana rdf:rest pełni role wskaźnika next w klasycznej implementacji listy, czyli pozwala na przejście do następnego elementu. Ostatni pusty węzeł ma wskaźnik wskazujący na specjalny element etykietowany rdf:nil, czyli kończący listę. RDF/XML upraszcza w dużym stopniu te skomplikowana strukturę ukrywając szczegóły przed użytkownikiem.

Reifikacje W języku RDF całe zdania mogą być również traktowane jako zasoby. Dzięki funkcjonalności określanej mianem reifikacji (ang. reification) można konstruować stwierdzenia, których podmiotami są inne stwierdzenia. Jest to bardzo użyteczne w wielu sytuacjach np. gdy chcemy zapisać kto jest autorem danego stwierdzenia. RDF posiada specjalne elementy słownictwa, których można użyć do opisu stwierdzenia (czyli właśnie reifikacji): rdf:statement, rdf:subject, rdf:predicate, rdf:object. Dla przykładu rozważmy pojedyncze zdanie w RDF opisujące język w jakim jest napisany dokument o adresie http://example.org/index.html.

Reifikacje Przykład 1 <?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://example.org/index.html"> <DC:language>en</DC:language> </rdf:description> </rdf:rdf>

Reifikacje Zakładamy, że chcemy zapisać kto jest autorem tego stwierdzenia. W tym celu możemy zastosować reifikacje. Kluczowe jest wprowadzenie dodatkowego węzła o URI http://example.org#triple123, pełniącego role identyfikatora stwierdzenia (informuje o tym zdanie z predykatem rdf:type i obiektem rdf:statement). Trzy zdania z predykatami rdf:subject, rdf:predicate i rdf:object specyfikują elementy opisywanego zdania: podmiot, orzeczenie i obiekt. RDF rozszerzamy również o zdanie z identyfikatorem trójki użytym bezpośrednio jako podmiotem. Mówi ono, że osoba identyfikowana jako http://www.tworcy.org#janek była autorem stwierdzenia.

Reifikacje Przykład 2 <?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/" xml:base="http://example.org" > <rdf:statement rdf:id="triple123"> <rdf:subject rdf:resource="http://example.org/index.html"/> <rdf:predicate rdf:resource="http://purl.org/dc/elements/1.1/language"/> <rdf:object>en</rdf:object> <DC:creator rdf:resource="http://www.tworcy.org#janek"/> </rdf:statement> <rdf:description rdf:about="http://example.org/index.html"> <DC:language>en</DC:language> </rdf:description> </rdf:rdf>

Reifikacje Zapis w XML pozwala jednak na duże uproszczenie i zmniejszenie liczby zdań wpisywanych explicite dzięki wykorzystaniu atrybutu rdf:id. Zamiast specyfikować elementy trójki za pomocą predykatów rdf:subject, rdf:predicate i rdf:object wystarczy nadać zdaniu identyfikator (wpisując go jako atrybut rdf:id) i odwoływać się do niego dalej tak jak do ID zwykłego zasobu:

Reifikacje Przykład 3 <?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/" xml:base="http://example.org" > <rdf:description rdf:about="http://example.org/index.html"> <DC:language rdf:id="triple123">en</dc:language> </rdf:description> <rdf:description rdf:about="#triple123"> <DC:creator rdf:resource="http://www.tworcy.org#janek"/> </rdf:description> </rdf:rdf>

Typowane literały Literały w RDF mogą mieć wyspecyfikowany typ. Do oznaczenia faktu, że literał powinien być traktowany jako dana określonego typu, używamy atrybutu rdf:datatype. Najczęściej używane są typy danych zdefiniowane przez W3C w schematach XML. I tak możemy dodać zdanie informujące o dacie utworzenia dokumentu, węzeł opisujący ten zasób zyska dodatkowy węzeł potomny: <DC:date rdf:datatype="http://www.w3.org/2001/xmlschema#date"> 2011-10-26 </DC:date>

Typowane literały Zastosowanie ścisłego systemu typów nakłada ograniczenia na wartości jakie mogą przyjąć literały. Wzbogacone zostaje znaczenie predykatów i aplikacja wykorzystująca informacje o typach może w zautomatyzowany sposób wykryć błędne zastosowania literałów takie jak użycie słowa gdy spodziewana jest liczba. Ułatwia to zachowanie spójności.

Typowane literały Dla poprawienia czytelności dokumentu często wykorzystywane są encje XML. W tym celu należy umieścić tuz po deklaracji dokumentu XML dodatkowa deklaracje DOCTYPE: <!DOCTYPE rdf:rdf [ <!ENTITY xsd"http://www.w3.org/2001/xmlschema#"> ]> Teraz w przykładzie z data możemy zastąpić długi URI przez referencje do encji: <DC:date rdf:datatype="&xsd;date">2011-10-26</dc:date>

rdf:value Rozważmy następujący przykład: <intrdf:modyfikacja>23</intrdf:modyfikacja> Przyjmijmy, że liczba 23 związana jest z ostatnią datą modyfikacji tzn. tyle dni temu zasób był modyfikowany. Nie wiemy jednak czy chodzi o godziny, dni, czy może miesiące. Taką dodatkową informację możemy zapisać następująco: <intrdf:modyfikacja>23 dni</intrdf:modyfikacja> W tym przypadku wydobycie informacji o liczbie dni wymaga jednak rozbicia zawartości znacznika na dwa elementy: liczba i słowo dni. Informację taką możemy jednak zapisać inaczej: <intrdf:modyfikacja>23</intrdf:modyfikacja> <intrdf:jednostka>dzień</intrdf:jednostka>

rdf:value Przykład W tym przypadku jednak wartość 23 nie jest ściśle związana z jednostką poza tym, że modyfikacja i jednostka są właściwościami tego samego zasobu. Powyższych problemów możemy uniknąć jeżeli zastosujemy predykat rdf:value, który określa właśnie wartość. Rozważmy przykład:

rdf:value Przykład <?xml version="1.0"?> <rdf:rdf xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:intrdf="http://www.semantict.net/rdf/intrordf/elements#" > <rdf:description rdf:about="http://www.semantict.net/rdf/intrordf/"> <intrdf:modyfikacja> <rdf:value>23</rdf:value> <intrdf:jednostka>dzien</intrdf:jednostka> </intrdf:modyfikacja> </rdf:description> </rdf:rdf>

Dziękuję za uwagę