Wstęp do Technologii Semantycznych Idea, język RDF
Wielkość Internetu http://www.worldwidewebsize.com/
Wielkość Internetu http://www.worldwidewebsize.com/
Problem Ilość informacji jest tak duża, że realne staje się: PRZECIĄŻENIE INFORMACJĄ* (information overload) Powoli przestajemy być w wstanie odróżnić fakty istotne (sygnał) od nieistotnych (szum). *A.Toffler, Szok przyszłości, rok 1970.
Problemy z wyszukiwaniem Jaka przyczyna? Informacja znajdująca się w Internecie jest przeznaczona dla człowieka i nie nadaje się do przetwarzania przez maszyny.
Maszyny nic nie rozumieją!
Maszyny nic nie rozumieją! Wpisujemy w wyszukiwarce: wczasy Łeba tanie <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta name="robots" content="index,follow"> <meta http-equiv="content-type" content="text/html; charset=iso-8859-2"> <title>tanie wczasy, zielone szkoły, kolonie Łeba, tani wypoczynek - Eureka</title> <meta name="description" content="biuro organizuje tanie wczasy, zielone szkoły, kolonie (Łeba), tani wypoczynek w Łebie, biura podróży"> <meta name="keywords" content="zielone szkoły, wczasy, tanie, wypoczynek, tani wypoczynek, Łeba, leba, biura podróży, eureka, kolonie"> <meta name="page-type" content="zielone szkoły Łeba"> </head> Cała aktywność maszyny ogranicza się do wyszukiwania odpowiednich ciągów znaków!
Maszyny nic nie rozumieją! Z punku widzenia maszyny strona WWW wygląda tak: EERRTYT DFDF BGFHYY DFFGFGFGFG/FGFGFGFGF$ dfdfd dghjd djkll bhdd5rh gtty8t4 hdfjhdjfhf Asddf hvkdhfjdfdff-fndfndfdf vbcon45 fghfkhg57tyrjgtlrgj cvcvnh 456 xyhj jkrts, dfgh klje, rtyuj werbn, erertty Er5ty6 - Asdfghfgf dfhdhfd wey64njdhp3e8v ujrerf gfgfg fkgjfkgjflg xyhj jkrts, dfy rrtyuyu, rtyuj (werbn), erertty Er5ty6 e Thfdfd, dfdhfd dsdsdjkh hfdgfdhf ghgfgh klje, wczasy, ererttye, Er5ty6, erertty Er5ty6, werbn, tyuio sdsdvg, asdfgh, rtyujfghf rgrlgjk fgfkgjfkg ttrlgtjkgj dfgh klje werbnnhkj fkjgfkgjfk tyyyy ghfturi565 gtrepogp fgjieirerg trtrotirot dghjd a zadanie maszyny polega na wyszukaniu ciągu znaków np. Thfdfd.
Czy można to zmienić?
Knowledge Graph strings things
Facebook Graph Search Wyszukiwanie, którego efektem są np. konkretne osoby (zasoby) a nie ciągi znaków.
Rozwiązanie?
Zapiszmy informacje w sposób zrozumiały dla maszyn. INTERNET SEMANTYCZNY to Internet w którym informacje zapisane są w sposób zrozumiały dla maszyn w sposób który ułatwia maszynom przetwarzanie informacji.
Maszyny rozumieją? Internet dzisiaj Internet Semantyczny Jorge Cardoso, The Syntactic and the Semantic Web, Applications, IGI Global, 2007. in Semantic Web Services: Theory, Tools, and
Ewolucja Internetu
Ewolucja Internetu Jorge Cardoso, The Syntactic and the Semantic Web, Applications, IGI Global, 2007. in Semantic Web Services: Theory, Tools, and
Czego potrzebujemy?
Stos technologii
Technologiczna strzałka czasu
Ważna uwaga Technologie semantyczne to technologie tła
Przykłady Przypadki użycia technologii semantycznych: DBpedia (semantyczna wikipedia) Knowledge Graph Rich snippets (semantyka w stronach WWW) Identyfikacja genów chorobotwórczych System SAPPHIRE (medycyna) Semantyczna wyszukiwarka (motoryzacja)
LOD cloud diagram Linked Open Data cloud diagram przedstawia zbiory danych m.in. zapisanych w języku RDF. Maj 2007
LOD cloud diagram Lipiec 2009
LOD cloud diagram Wrzesień 2011
LOD cloud diagram 2014
Projekt DBpedia ma na celu zapisanie w języku RDF informacji zawartych w największej internetowej encyklopedii Wikipedii. Informacje pobierane są z tzw. InfoBox ów znajdujących się zazwyczaj po prawej stronie okna dokumentów Wikipedii.
http://dbpedia.org/page/jerzy_radziwiłowicz Informacje z Wikipedii + słownictwo z ontologii DBpedii
Aktualnie DBpedia zawiera: 3.77 miliona rzeczy oraz 400 milionów faktów Zbiór danych DBpedii składa się z 1.89 miliarda kawałków informacji (stwierdzeń RDF) spośród których: 400 milionów pochodzi z angielskiej wersji Wikipedii. 1.46 miliarda pochodzi z innych wersji językowych. 27 milionów stanowią linki do zewnętrznych repozyto-riów RDF (3 miliony linków RDF do Freebase).
DBpedia umożliwia bardziej precyzyjne wyszukiwanie informacji zgromadzonych w Wikipedii. Możemy na przykład zapytać : Które z samochodów wyprodukowanych za naszą wschodnią granicą należą do klasy pojazdów luksusowych? Albo o: osoby urodzone w Warszawie w latach 1950-1951
SPARQL endpoint
Składnia RDF
Problem z przetwarzaniem informacji Przyczyna Informacja znajdująca się w Internecie jest zrozumiała dla człowieka, ale nie nadaje się do przetwarzania przez maszyny. Jakie rozwiązanie? Zapiszmy informacje w sposób zrozumiały dla maszyn.
Zasoby RDF jest formatem zapisu informacji w Internecie Semantycznym. W języku RDF opisujemy zasoby. Zasobem może być dowolny obiekt znajdujący się w sieci, pojęcie abstrakcyjne, relacja czy obiekt fizyczny. Każdy zasób musi posiadać identyfikator URI (ang. Universal Resource Identifier Zunifikowany Identyfikator Zasobów). Szczególnym przypadkiem URI jest URL (ang. Universal Resource Locator Identyfikator Lokalizacji Zasobów) określony dla zasobów internetowych.
URI Schemat URI: <schemat>:<część hierarchiczna/niehierarchiczna> Przykłady http://example.org/absolute/uri/with/absolute/path/resource.txt ftp://example.org/resource.txt urn:issn:1535-3613 mailto:mskulim@uni.lodz.pl
URI references Nie zawsze musimy operować całymi identyfikatorami URI. Możemy korzystać z względnych URI. Cały identyfikator URI jest wówczas uzyskany przez połączenie bazowego URI i względnego URI. Przykłady //example.org/scheme-relative/uri/with/absolute/path/res.txt /relative/uri/with/absolute/path/to/res.txt relative/path/to/resource.txt../../../resource.txt./resource.txt#frag01 resource.txt #frag01
Stwierdzenia Zasoby opisujemy za pomocą stwierdzeń (odpowiedniki zdań oznajmujących w języku naturalnym). W skład każdego stwierdzenia wchodzą następujące elementy: podmiot (subject) zasób (np. osoba, miejsce, rzecz) o którym mówi stwierdzenie. orzeczenie (predicate) zasób będący właściwością (np. nazwa, miasto, tytuł, kolor, charakterystyka) podmiotu. obiekt (object) wartość właściwości opisywanej przez orzeczenie. Obiekt może być zasobem lub tzw. literałem czyli ciągiem znaków.
Graficzna reprezentacja stwierdzeń Przykład Twórcą strony http://web.net/ jest Marek Bajon http://web.net http://fg.com/tworca Marek Bajon
Grafy RDF
Grafy RDF
Puste węzły W języku RDF dopuszczalne jest wykorzystywanie zasobów które nie posiadają identyfikatorów URI. Węzeł grafu związany z takim zasobem nazywamy węzłem pustym (ang. blank node). Pojawienie się pustego węzła może oznaczać, że identyfikator URI dla danego zasobu nie istnieje lub jest w danej chwili nieznany. Pusty węzeł może pojawić się na miejscu podmiotu i obiektu. Pusty węzeł ma zwykle przypisany przez walidator lokalny identyfikator.
Grafy RDF pusty węzeł
Grafy RDF
Grafy RDF
Grafy RDF Identyfikator
Grafy RDF Typ literału Grafy RDF pozwalają w wygodny i przejrzysty sposób reprezentować informacje. Przeznaczone są jednak dla ludzi, a nie dla aplikacji!!
Serializacja RDF Serializacja RDF to konwersja między modelem abstrakcyjnym jakim są grafy i konkretnym formatem takim jak plik czy inny strumień bajtów. Istnieje kilka formatów serializacji RDF: RDF/XML, Turle, N-Triples, N3
Turtle Status oficjalny:
Turtle - zasoby Jest to najprostsza i najbardziej zwięzła serializacja RDF. W porównaniu z innymi serializacjami Turtle jest też najbardziej czytelna dla ludzi. Zasoby Zasoby mogą być zapisane na dwa sposoby: Pełne URI umieszczone są w nawiasach < i >. Przykład Rozszerzenie pliku:.ttl Typ MIME: text/turtle <http://www.semantict.net/data/author>
Turtle - zasoby Aby uniknąć pisania pełnych identyfikatorów URI możemy używać zdefiniowanych wcześniej prefiksów. Otrzymujemy wówczas tzw. qualified name. Nazwa kwalifikowana (qnazwa) składa się z następujących elementów: Przykład prefiks_przestrzeni_nazw:lokalna_nazwa_zasobu Jeżeli prefiks abc związany jest z przestrzenią nazw http://www.semantict.net/data/ wówczas zasób z poprzedniego slajdu możemy zapisać następująco: abc:author
Turtle - zasoby Deklaracja przestrzeni nazw wygląda następująco: Przykład @prefix definiowany_prefiks: URI_przestrzeni_nazw. Deklaracja przestrzeni nazw użytej w poprzednim przykładzie: @prefix abc: <http://www.semantict.net/data/>.
Turtle - literały Literały (plain literals) W zapisie literałów nie zawierających przejścia do nowej linii wykorzystywany jest cudzysłów: "krotki literal" Jeżeli literał zapisany jest z przejściem do nowej linii wówczas stosujemy potrójny cudzysłów: """dlugi literal """ Do literału może też być dodana informacja o języku postaci: @language * """Warsaw"""@en *http://tools.ietf.org/html/rfc3066
UWAGA: nie można określić jednocześnie i typu danych i języka. Turtle - literały Literały z określonym typem danych (typed literals) Turtle umożliwia zapis typu literału przez dodanie do niego następującego ciągu znaków: ^^<dataype URI> gdzie datatype URI określa typ danych (często są to typy z XML Schema). Przykład "34"^^<http://www.w3.org/2001/XMLSchema#int> "Warsaw^^<http://www.w3.org/rdf-schema#Literal> """-12.5e10"""^^xsd:double
Turtle - stwierdzenia Stwierdzenia Podmiot, orzeczenie i obiekt zapisywane są w linii i oddzielone spacją. Stwierdzenie zakończone jest kropką. Przykład @prefix intrordf: <http://rdf.s.net/e#>. @prefix a: <http://xy.ab.net/>. @prefix sem: <http://ab.xy.net/>. sem:p10 intrordf:autor "Marek Nowak". sem:p10 intrordf:tytul "Ontologia". sem:p10 a:seria sem:sweb. sem:sweb intrordf:tytul "Semantic Web".
Turtle - stwierdzenia Przykład Równoważnie z użyciem pełnych identyfikatorów URI: <http://ab.xy.net/p10> <http://rdf.s.net/e#autor> "Marek Nowak". <http://ab.xy.net/p10> <http://rdf.s.net/e#tytul> "Ontologia". <http://ab.xy.net/p10> <http://xy.ab.net/seria> <http://ab.xy.net/sweb>. <http://ab.xy.net/sweb> <http://rdf.s.net/e#tytul> "Semantic Web".
Turtle - stwierdzenia Uproszczenie 1 Użycie średnika oznacza, że następne dwa elementy będą orzeczeniem i obiektem stwierdzenia o takim samym podmiocie jak stwierdzenie wcześniejsze. Przykład sem:p10 intrordf:autor "Marek Nowak". sem:p10 intrordf:tytul "Ontologia". sem:p10 intrordf:autor "Marek Nowak"; intrordf:tytul "Ontologia".
Turtle - stwierdzenia Uproszczenie 2 Użycie przecinka oznacza, że następny element będzie obiektem stwierdzenia o takim samy podmiocie i orzeczeniu jak stwierdzenie wcześniejsze. Przykład sem:p10 intrordf:autor "Marek Nowak". sem:p10 intrordf:autor "Agata Kłos". sem:p10 intrordf:autor "Marek Nowak", "Ontologia".
Turtle - stwierdzenia Uproszczenie 3 Możemy zdefiniować bazową przestrzeń nazw, która będzie wykorzystywana w przypadku zasobów bez określonego prefiksu. @base URI_bazowej_przestrzeni_nazw. Przykład @base <http://a.b.cc/>. @prefix p: <http://x.y.zz/>. :d p:r "Marek Nowak". <http://a.b.cc/d> <http://x.y.zz/r> "Marek Nowak".
Turtle - stwierdzenia Przykład @prefix : <http://a.b.cc/>. @prefix p: <http://x.y.zz/>. :d p:r "Marek Nowak". <http://a.b.cc/d> <http://x.y.zz/r> "Marek Nowak". @base <http://a.b.cc/>. <#ax> <#bx> "Marek Nowak". <http://a.b.cc/#ax> <http://a.b.cc/#bx> "Marek Nowak".
Turtle puste węzły Puste węzły oznaczamy przez _:nazwa. Przykład semt:intrordf intrdf:autor _:aautor. _:aautor intrdf:imie "Marcin". _:aautor intrdf:wiek "34".
Turtle puste węzły Puste węzły można także oznaczyć przez []. Przykład @prefix sem: <http://ab.xy.net/>. [] sem:autor "Marek Nowak". walidator _:bnode1874316544 <http://ab.xy.net/autor> "Marek Nowak".
Turtle puste węzły Puste węzły można także oznaczyć przez []. Przykład @prefix sem: <http://ab.xy.net/>. [sem:autor "Marek Nowak"]. walidator _:bnode1874316544 <http://ab.xy.net/autor> "Marek Nowak".
Turtle puste węzły Puste węzły można także oznaczyć przez []. Przykład Można zapiać inaczej: _:aautor intrdf:imie "Marcin". _:aautor intrdf:wiek "34". [intrdf:imie "Marcin"] intrdf:wiek "34".
Turtle puste węzły Przykład [intrdf:imie "Marcin"] rdfint:autor [intrdf:tytul "Wprowadzenie do RDF"].