Na podstawie artykułu: http://www.w3.org/teamsubmission/turtle/



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

Przykładowy dokument XML

RDF (Resource Description Framework)

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

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

Laboratorium 1. Wprowadzenie do protokołu SNMP i kodowanie BER (ASN.1)

RDF Schema (schematy RDF)

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

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

A co to jest LDAP. Dariusz Żbik Remigiusz Górecki

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

Oczywiście plik musi mieć rozszerzenie *.php

Internet Semantyczny. Schematy RDF i wnioskowanie

XML extensible Markup Language. Paweł Chodkiewicz

- wewnątrz elementów prostych występuje tylko jeden typ danych, wewnątrz złoŝonych nie moŝemy dokładnie określić liczby wystąpień elementu

Marcin Skulimowski - RDF

Wstęp do Technologii Semantycznych. Idea, język RDF

extensible Markup Language, cz. 4 Marcin Gryszkalis, mg@fork.pl

Test przykładowy 2 PAI WSB Wrocław /06/2018

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

Zasady Nazewnictwa. Dokumentów XML Strona 1 z 9

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

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

Programowanie w Sieci Internet JSP ciąg dalszy. Kraków, 9 stycznia 2015 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Filtr RDF dla systemu Odra

MINISTERSTWO SPRAW WEWNĘTRZNYCH I ADMINISTRACJI DEPARTAMENT INFORMATYZACJI

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

7. Pętle for. Przykłady

Sieci i systemy operacyjne I Ćwiczenie 1. Podstawowe polecenia systemu Unix

Ćwiczenie: JavaScript Cookies (3x45 minut)

LDAP to protokół Usługi katalogowe Zakończenie LDAP. Łukasz Zubkowicz. 25 listopada 2009

Strumienie, pliki. Sortowanie. Wyjątki.

Podstawowe konstrukcje Podstawowymi konstrukcjami są wzorce element oraz attribute:

XML extensible Markup Language 7

Powtórka algorytmów. Wprowadzenie do języka Java.

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

Powtórka algorytmów. Wprowadzenie do języka Java.

Tworzenie własnych komponentów

Standardy semantyczne

MATERIAŁY DO ZAJĘĆ II

Systemy operacyjne. Laboratorium 9. Perl wyrażenia regularne. Jarosław Rudy Politechnika Wrocławska 28 lutego 2017

Podstawy i języki programowania

Platformy Programistyczne Podstawy języka Java

Definiowanie typów dokumentów Część 3. XML Schema

Internet Semantyczny. Podstawy SPARQL

1. Wprowadzenie do języka PHP

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

Właściwości i metody obiektu Comment Właściwości

Podstawy programowania skrót z wykładów:

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

XML Path Language (XPath)

DTD - encje ogólne i parametryczne, przestrzenie nazw

Wykład 9 Kolekcje, pliki tekstowe, Przykład: Notatnik

Terytorialna analiza danych

Prolog (Pro-Logic) Programowanie w Logice. Dr inż. Piotr Urbanek

Języki formalne i automaty Ćwiczenia 6

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

Imię i Nazwisko Data Ocena. Laboratorium 7

WYKŁAD 1 METAJĘZYK SGML CZĘŚĆ 1

Program szkoleniowy. 24 h dydaktycznych (18 h zegarowych) NAZWA SZCZEGÓŁY CZAS

4. Funkcje. Przykłady

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

System operacyjny UNIX Ćwiczenie 1. Podstawowe polecenia systemu Unix

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

ANKIETER wersja tworzenie kwestionariusza

Budowa wiadomości SMTP. autorzy: Aleksandra Wichert Marcin Żurowski

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

XML Schema. Typy proste, wyprowadzanie typów, modularyzacja schematu. Patryk Czarnik. Instytut Informatyki UW

Programowanie w języku Java


Spis treści OPIS PLIKU W FORMACIE CSV Z DANYMI PPE LUB EP 1

Języki skryptowe w programie Plans

Standard pliku importu danych pracowników i firm do programu e-pity (od wersji e-pity 3.0)

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

XML extensible Markup Language. część 1

Optimizing Programs with Intended Semantics

DOKUMENTY. v Strona 1 z 10

- nawiasy kwadratowe oznaczają, że to lista

LAB 7. XML EXtensible Markup Language - Rozszerzalny Język Znaczników XSD XML Schema Definition Definicja Schematu XML

Podstawy algorytmiki i programowania - wykład 4 C-struktury

Historia kodowania i format plików XML. Jolanta Bachan

Technologie Sieci Semantycznych

Ściągawka z funkcji i właściwości systemowych VBA. Opis działania i parametrów. Nazwa funkcji. Składnia zwracanej wartości

Informatyzacja Przedsiębiorstw

LibreOffice Calc VBA

Programowanie obiektowe

VBA praca z makrami w Excelu

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Podstawy Informatyki. Metalurgia, I rok. Wykład 3 Liczby w komputerze

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Gatesms.eu Mobilne Rozwiązania dla biznesu

Programowanie 3 - Funkcje, pliki i klasy

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

XPath XML Path Language. XPath. XSLT część 1. XPath data model. Wyrażenia XPath. Location paths. Osie (axes)

Komputerowe systemy na rynkach finansowych. wykład 5. MQL4 - funkcje operujące na obiektach wykresu

Java Podstawy. Michał Bereta

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

Struktura pliku importu do bazy Shark6

Transkrypt:

Na podstawie artykułu: http://www.w3.org/teamsubmission/turtle/ 1

Nazwa Terse RDF Triple Language konkretna składnia językowa dla frameworka RDF i jego standardów rozszerzenie N-Triples wykorzystujące najbardziej użyteczne rzeczy zaczerpnięte z Notation 3 - przy zachowaniu modelu RDF "Nadzbiór" N-Triples i "podzbiór" Notation 3: Wszystkie RDFy zapisane przy użyciu Turtle powinny być używalne wewnątrz SPARQL Protocol And RDF Query Language 2 z 27

Turtle pozwala na tworzenie grafów RDF zapisanych w zwięzłej i naturalnej formie tekstowej. Zapis ten korzysta ze skrótów dla wzorców i typów danych często używanych w RDF. Charakteryzuje się kompatybilnością z istniejącymi już N-Triples i Notation 3. Rekomendowana składnia XML dla RDF, RDF/XML posiada pewne ograniczenia narzucone przez XML i zasady używania namespaców. Ograniczenia te uniemożliwiają zapisanie wszystkich możliwych grafów RDF: [1]niektóre URIs są przez XML zabronione [2] XML 1.0 uniemożliwia kodowanie niektórych znaków Unicode Turtle nie posiada takich ograniczeń 3 z 27

Notation 3 (N3) - skrócony, nie-xmlowy model zapisu (serializacji) modeli RDF zaprojektowany z uwzględnieniem human-readability. Znacznie czytelniejszy niż XML/RDF: RDF/XML: <rdf:rdf xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"> <rdf:descriptionrdf:about="http://en.wikipedia.org/wiki/tony_benn"> <dc:title>tony Benn</dc:title> <dc:publisher>wikipedia</dc:publisher> </rdf:description> </rdf:rdf> To samo w N3: @prefix dc: <http://purl.org/dc/elements/1.1/>. <http://en.wikipedia.org/wiki/tony_benn> dc:title "Tony Benn"; dc:publisher "Wikipedia". http://www.w3.org/teamsubmission/n3/ http://www.w3.org/designissues/notation3.html http://www.w3.org/2000/10/swap/primer 4 z 27

Format zapisu (serializacji) modeli grafów RDF Zaprojektowany by uprościć format N3 i Turtle i tym smamym ułatwić parsowanie i generowanie Pewne uproszczenia (w stosunku np. do RDF/XML i Turtle) powodują, że zapis dużej ilości danych może być uciążliwy i trudny do odczytania <http://www.w3.org/2001/sw/rdfcore/ntriples/> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/document>. <http://www.w3.org/2001/sw/rdfcore/ntriples/> <http://purl.org/dc/terms/title> "N-Triples"@en-US. <http://www.w3.org/2001/sw/rdfcore/ntriples/> <http://xmlns.com/foaf/0.1/maker> _:art. <http://www.w3.org/2001/sw/rdfcore/ntriples/> <http://xmlns.com/foaf/0.1/maker> _:dave. _:art <http://www.w3.org/1999/02/22-rdf-syntax-ns#> <http://xmlns.com/foaf/0.1/person>. _:art <http://xmlns.com/foaf/0.1/name> "Art Barstow". _:dave <http://www.w3.org/1999/02/22-rdf-syntax-ns#> <http://xmlns.com/foaf/0.1/person>. _:dave <http://xmlns.com/foaf/0.1/name> "Dave Beckett". 5 z 27

Turtle pozwala na zapis grafów RDF w formie tekstowej składa się z sekwencji dyrektyw, RDF-Triples (trójki) lub pustych linii. Każda linia kończy się. komentarz zaczynamy od hasha; obowiązuje on do końca linii: # Przykładowy dokument Turtle: @prefix foo: <http://example.org/ns#>. @prefix : <http://other.example.org/ns#>. foo:bar foo:like foo:object. :bar foo:interest foo:sth. 6 z 27

Możemy wyróżnić trzy elementy składające się na RDF Terms: RDF URI References (URIs) Literały Blank Nodes 7 z 27

# Przykładowy dokument Turtle: @prefix foo: <http://example.org/ns#>. @prefix : <http://other.example.org/ns#>. foo:bar foo:like foo:object. :bar foo:interest foo:sth. URI References (URIs) są zapisywane wewnątrz znaczników < i > URIs: absolute lub relative URIs Mogą być skracane poprzez @prefix: http://example.org/ns#bar Default prefix, czyli : @prefix : foo:bar 8 z 27

Białe znaki są używane do odseparowania dwóch tokenów, które nieoddzielone mogłyby być odczytywane jako pojedynczy token. Białe znaki są znaczące w następujących tokenach: - Relative URIs - string - longstring 9 z 27

"chat" "czat"@pl "chat"@en """String with new line""" "foo"^^http://example.org/my/datatype > """10"""^^xsd:decimal Pojedyncze i potrójne cudzysłowy (podwójne i poszóstne ) Przyrostki opisujące język Przyrostki opisujące typ danych (pełne bądź jaki Qname) 10 z 27

Przykład dwóch identycznych trójek zawierających literały z nowymi liniami: @prefix : <http://example.org/stuff/1.0/>. :a :b "The first line\nthe second line\n more". :a :b """The first line The second line more""". Literały i URI References mogą posiadać znaki ucieczki np.: \t (U+0009) \n (U+000A) \r (U+000D) \" (U+0022) tylko dla stringów '\> (tylko wewnątrz relativeuris) 11 z 27

Blank nodes - czyli puste węzły - zapisywane są jako _:nodeid, gdzie nodeid jest indentyfikatorem danego węzła. Pusty węzeł może być także utworzony poprzez [ ] co przydaje się gdy chcemy zaopatrzyć Subject (z trójki RDF) w parę <predykat, object>. Użycie pustego węzła pozwala formułować stwierdzenia typu Jakaś osoba o imieniu Kirk interesuje się muzyką zamiast Kirk interesuje się muzyką _:me _:a1234 12 z 27

Jeśli, przykładowo, w trójce Subject Predicate Object ostatnia jej część składa się z więcej niż jednego URI, możemy rozdzielić te URI używając symbolu, : @prefix : <http://xmlns.com/foaf/0.1/>. <mailto:person@example.net> :interest <http://www.foaf-project.org/>, <http://www.ilrt.bris.ac.uk/discovery/2004/01/turtle/>. Jeśli mamy ten sam subject w więcej niż jednym statemencie oraz różne relacje, możemy odseparować pary (relacja - object) używając średnika: <mailto:person@example.net> :name "Anne Example-Person" ; :interest <http://www.foaf-project.org/>, <http://www.ilrt.bris.ac.uk/discovery/2004/01/turtle/>. 13 z 27

Bardzo często występującą relacją jest relacja między rzeczą a kategorią, do której ta rzecz należy, czyli type. Jeśli chcemy powiedzieć, że Ann jest osobą napiszemy: @prefix : <http://xmlns.com/foaf/0.1/>. @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>. <mailto:person@example.net> rdf:type :Person. Relacja ta jest tak często spotykana, Turtle posiada specjalne zarezerwowane słowo a pozwalające na zapis: @prefix : <http://xmlns.com/foaf/0.1/>. <mailto:person@example.net> a :Person. 14 z 27

Zapis używający N-Triples: <http://www.w3.org/2001/sw/dataaccess/df1/tests/test-00.ttl> <http://www.w3.org/2001/sw/dataaccess/df1/tests/test-01.ttl> <http://www.w3.org/2001/sw/dataaccess/df1/tests/test-02.ttl>. <http://example.org/ns/a2> <http://example.org/ns/b2> <http://example.org/ns/c2>. <http://example.org/ns/foo/a3> <http://example.org/ns/foo/b3> <http://example.org/ns/foo/c3>. <http://example.org/ns/foo/bar#a4> <http://example.org/ns/foo/bar#b4> <http://example.org/ns/foo/bar#c4>. <http://example.org/ns2#a5> <http://example.org/ns2#b5> <http://example.org/ns2#c5>. 15 z 27

Początkowy Base URI jest zdefiniowany poprzez użycie mechanizmu opisanego w URI RFC - zależny od protokołu lub innego kontekstu poza dokumentem. Podczas parsowania przez turtle, base URI w dowolnym punkcie dokumentu jest oznaczany przez użycie dyrektywy @base, która ustawia nowy base URI relatywny to bieżącego. Dyrektywa @base może być stosowana wielokrotnie. # aktualne base URI to URI dokumentu: <a1> <b1> <c1>. @base <http://example.org/ns/>. # aktualne base URI to http://example.org/ns/ <a2> <http://example.org/ns/b2> <c2>. @base <foo/>. # nowe base URI <a3> <b3> <c3>. @prefix : <bar#>. :a4 :b4 :c4. @prefix : <http://example.org/ns2#>. :a5 :b5 :c5. 16 z 27

Poprzedni zapis odpowiada poniższemu zapisowi w N-Triples: <http://www.w3.org/2001/sw/dataaccess/df1/tests/test-00.ttl> <http://www.w3.org/2001/sw/dataaccess/df1/tests/test-01.ttl> <http://www.w3.org/2001/sw/dataaccess/df1/tests/test-02.ttl>. <http://example.org/ns/a2> <http://example.org/ns/b2> <http://example.org/ns/c2>. <http://example.org/ns/foo/a3> <http://example.org/ns/foo/b3> <http://example.org/ns/foo/c3>. <http://example.org/ns/foo/bar#a4> <http://example.org/ns/foo/bar#b4> <http://example.org/ns/foo/bar#c4>. <http://example.org/ns2#a5> <http://example.org/ns2#b5> <http://example.org/ns2#c5>. <a1> <b1> <c1>. @base <http://example.org/ns/>. <a2> <http://example.org/ns/b2> <c2>. @base <foo/>. <a3> <b3> <c3>. @prefix : <bar#>. :a4 :b4 :c4. @prefix : <http://example.org/ns2#>. :a5 :b5 :c5. 17 z 27

Wartą uwagi częścią FOAF jest możliwość opisywania relacji między osobami. Przykładowo, Ann zna osobę o imieniu Mr Bean, którego email to <bean@example.com>. Możemy to zapisać następująco: @prefix : <http://xmlns.com/foaf/0.1/>. <mailto:ann@example.net> :knows mailto:bean@example.org>. <mailto:bean@example.org> a :Person; :name Mr Bean". 1) Ann zna osobę o emailu bean@example.org 2) Osoba o tym mailu: a) Jest typu osoba b) Nazywa się Mr Bean 18 z 27

@prefix : <http://xmlns.com/foaf/0.1/>. <mailto:ann@example.net> :knows mailto:bean@example.org>. <mailto:bean@example.org> a :Person; :name Mr Bean". Może się jednak zdarzyć, że nie chcemy definiować URLa (emaila). W zamian tego chcemy użyć obiektu anonimowego w miejscu przeznaczonym na obiekt. Obiekty anonimowe są definiowane poprzez nawiasy kwadratowe obejmujące jedną bądź więcej par relacjaobiekt oddzielając obiekty średnikami. Można tak zdefiniować wszelkiego rodzaju relacje, dla których ten obiekt jest subjectem: @prefix : <http://xmlns.com/foaf/0.1/>. <mailto:ann@example.net> :knows [ a :Person ; :name Mr Bean" ]. 19 z 27

Liczby całkowite dziesiętne mogą być zapisywane bezpośrednio lub poprzez nawiązanie do XML Schema Datatype xsd:integer: -5 10 +1 "-5"^^xsd:integer "10 ^^http://www.w3.org/2001/xmlschema#integer Liczby dziesiętne zmienno przecinkowe analogiczne: 1.3e2 10e0-12.5e10 1.3e2"^^xsd:double " -12.5e10 ^^http://www.w3.org/2001/xmlschema#double 20 z 27

Liczby dziesiętne stało przecinkowe analogiczne: 1.3 10.0-12.512 13.5"^^xsd:decimal "-12.294 ^^http://www.w3.org/2001/xmlschema#decimal Liczby typu boolean: true false true ^^xsd:boolean false ^^http://www.w3.org/2001/xmlschema#boolean 21 z 27

Przykład kolekcji: ( object1 object2 ) jest skrótem dla: [ rdf:first object1; rdf:rest [ rdf:first object2; rdf:rest rdf:nil ] ] ( ) to skót od: rdf:nil 22 z 27

Kolekcje RDF mogą być skracane przy użycie ciągu RDF Termsów (URI, literały i puste węzły) ujętego w nawiasy okrągłe. W celu ich odseparowania mogą być, jak zykle, użyte białe znaki. Format ten dostarcza pusty węzeł na początku kolekcji RDF, który może być użyty w dalszych skracaniach. Przykład: @prefix : <http://example.org/foo>. # wartością tej trójki jest pusty węzeł RDF: :subject :predicate ( :a : b : c ). # wartość pustej kolekcji: rdf:nil :subject :predicate2 (). 23 z 27

<?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/" xmlns:ex="http://example.org/stuff/1.0/"> <rdf:description rdf:about="http://www.w3.org/tr/rdf-syntax-grammar" dc:title="rdf/xml Syntax Specification (Revised)"> <ex:editor> <rdf:description ex:fullname="dave Beckett"> <ex:homepage df:resource="http://purl.org/net/dajobe/" /> </rdf:description> </ex:editor> </rdf:description> </rdf:rdf> @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>. @prefix dc: <http://purl.org/dc/elements/1.1/>. @prefix ex: <http://example.org/stuff/1.0/>. <http://www.w3.org/tr/rdf-syntax-grammar> dc:title "RDF/XML Syntax Specification (Revised)" ; ex:editor [ ex:fullname "Dave Beckett"; ex:homepage <http://purl.org/net/dajobe/> ]. Średnik - powtarza subject trójek, które różnią się predykatem i objectem 24 z 27

1. Zamapowanie ericfoaf na IRI http://www.w3.org/people/eric/ericp-foaf.rdf#. 2. Zamapowanie pustego prefiksu na IRI http://xmlns.com/foaf/0.1/. 3. cursubject http://www.w3.org/people/eric/ericp-foaf.rdf#ericp. 4. curpredicate IRI http://xmlns.com/foaf/0.1/givenname. 5. Wygenerowanie trójki: <...rdf#ericp> <.../givenname> "Eric". 6. curpredicate http://xmlns.com/foaf/0.1/knows. 7. Wygenerowanie trójki : <...rdf#ericp> <.../knows> <...who/dan-brickley>. 8. Wygenerowanie trójki : <...rdf#ericp> <.../knows> <_:blank>. 9. Zapis stanu cursubject i przypisanie cursubject _blank1. 10.Zapis stanu curpredicate. 11. curpredicate http://xmlns.com/foaf/0.1/mbox. 12.Wygenerowanie trójki: _:blank <.../mbox> <mailto:timbl@w3.org>. 13.Przywrócenie zapisanych wartości cursubject i curpredicate 14.Wygenerowanie trójki: <...rdf#ericp> <.../knows> <http://getopenid.com/amyvdh>. 25 z 27

Jak wcześniej wspomniano, Turtle jako nadzbiór N-Triples dodaje do N-Triples pewne elementy składniowe: Usunięto restrykcje dotyczące whitespaceów Kodowanie znaków zmienione z ASCII na UTF-8 Dyrektywa @base do ustawiania base URI Dyrektywa @prefix do przypisywania namespaców Nazwy prefiksowane (<myprefix:subject>) Listy obiektów oddzielanych przecinkami Listy predykatów-obiektów oddzielanych średnikiem Nienazwane puste węzły oznaczane poprzez [] Skrót a równoważny rdf:type RDF collection constructor bound by ()s Literały typu deciam integer - xsd:integer Literały typu deciaml double - xsd:double Literały typu decimal stałoprzecinkowe - xsd:decimal Literały true/false typu Boolean - xsd:boolean 26 z 27

Notation 3 zawiera (co najmniej) następujące elementy składniowe, niewystępujące w Turtle. Lista ta nie zawiera wszystkich różnic. {... } is of paths like :a.:b.:c and :a^:b^:c @keywords => implies = equivalence @forall @forsome <= 27 z 27