RDF Schema: jak nadać znaczenie temu co mówimy
Potrafimy już tak zapisywać to o czym myślimy, żeby maszyny (semantyczne) potrafiły to odczytać: służy nam do tego RDF. Nieodzownym elementem procesu rozumienia jest jednak umiejętność kojarzenia faktów i wyciągania wniosków. Czas więc na to, aby poznać kolejny ważny element konieczny do budowy Sieci Semantycznej (patrz: semantyczny tort), czyli Schemat RDF (ang. RDF Schema).
Schemat RDF dostarcza zaledwie klika pojęć, ale ich znaczenie jest nieocenione. Umożliwiają one bowiem tworzenie słowników i prostych ontologii, bez których przetwarzanie, a tym samym rozumienie, informacji w Sieci Semantycznej byłoby niemożliwe. W zrozumieniu dzisiejszego wykładu może pomóc wiedza z teorii programowania obiektowego, ale ... może ona również przeszkodzić.
Dwoma (!) podstawowymi pojęciami zdefiniowanymi w Schemacie RDF sa: klasy (ang. class) i właściwości (ang. property). Klasy umożliwiają definiowanie typów zasobów, które będziemy opisywać, np. [Człowiek] czy [Samochód]. Właściwości służą do definiowania zależności pomiędzy zasobami w grafie RDF, np.: [prowadzić]. To właśnie właściwości używane są do tworzenia w grafie RDF krawędzi pomiędzy wierzchołkami reprezentującymi zasoby.
Niezmiernie istotne jest zapamiętanie, że klasy i właściwości są tak samo ważne. W odróżnieniu od teorii programowania obiektowego, właściwości nie są po prostu elementem wchodzącym w skład definicji klasy. Oznacza to tyle, że w tworzonej ontologii definiujemy niezależnie klasy i właściwości.
Oto jak definiujemy klasę [Samochód] i właściwość [prowadzić] (w Turtle):
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>. @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>. <http://www.semanticschool.com/example/Samochod> a rdfs:Class. <http://www.semanticschool.com/example/prowadzic> a rdf:Property.
Rodzi się więc pytanie: skoro mamy klasy i właściwości to czy istnieje możliwość wyrażenia relacji pomiędzy nimi? Oczywiście! Do tego celu zdefiniowane zostały dwa predykaty (czyli właściwości, ale może nie idźmy na razie dalej tym tropem): dziedzina (ang. domain) i zakres (ang. range). Dziedzina pozwala nam określić zasoby jakiego typu będą korzystać z danej właściwości. Zakres określa typy (w tym i klasy), na które dana właściwość może wskazywać; zakres może wskazywać na klasę lub typ XML Schema (patrz poprzedni artykuł o literałach).
Oto przykład powiązania właściwości [prowadzić] z klasami [Człowiek] i [Samochód], oraz właściwości [wiek] z literałami interpretowanymi jako liczby całkowite.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>. @prefix xsd: <http://www.w3.org/2001/XMLSchema#>. <http://www.semanticschool.com/example/prowadzic> rdfs:domain <http://www.semanticschool.com/example/Czlowiek>. <http://www.semanticschool.com/example/prowadzic> rdfs:range<http://www.semanticschool.com/example/Samochod>. <http://www.semanticschool.com/example/wiek> rdfs:range xsd:int.
Schemat RDF definiuje również inne właściwości pomocne przy tworzeniu ontologii. Jednak ich użycie wymaga lepszego zrozumienia tzw. logiki opisowej (ang. description logic) która jest podstawą przetwarzania ontologii. Dlatego też, poświęcimy temu osobny artykuł - już w najbliższy poniedziałek. Zapraszamy.

