Oprogramowanie
Sieci Semantycznej

aktualne możliwości praktycznej realizacji

Michał Świątkiewicz

2005.11.19

http://purl.org/net/mimas/semweb/

Tematyka prezentacji

Wprowadzenie

Sieć Semantyczna — zgodnie z wizją twórcy WWW, jest to sieć zrozumiała nie tylko dla człowieka, ale również dla maszyny (programu, „agenta”):

The Web was designed as an information space, with the goal that it should be useful not only for human-human communication, but also that machines would be able to participate and help. [...] Leaving aside the artificial intelligence problem of training machines to behave like people, the Semantic Web approach instead develops languages for expressing information in a machine processable form.

Semantic Web Road map”, Tim Berners-Lee, 1998

SW to naturalna (trwająca już) ewolucja WWW — sieć danych zamiast sieci dokumentów.

Wymaga to opracowania specjalnych metod zapisu informacji i wiedzy w sposób zrozumiały dla agentów, ale równocześnie zdatny do obsługi przez człowieka.

Zobacz również: Sieć Semantyczna jako przyszłość WWW - koncepcja i wprowadzenie do technologii.

Warstwy technologiczne Sieci Semantycznej


Kolor niebieski = rekomendacje W3C.

Schemat przedstawia aktualny „stos” rekomendacji — każda następna warstwa wykorzystuje warstwę niższą. Jednak wprowadzenie języków opisu reguł („rules”) powoduje wątpliwości co do zasadności takiego założenia. Stąd powstają pomysły rozdzielenia „stosu” na „dwie wieże” — Rules obok OWL.

Zapis informacji w Sieci Semantycznej

Rekomendacje W3C:

RDF — zasoby „identyfikowalne”, co nie koniecznie oznacza „możliwe do pobrania”. Więc nie tylko zasoby Sieci, ale również wszelkie obiekty świata rzeczywistego.

W najnowszych opracowaniach identyfikowalne raczej za pomocą IRI, nie URI.

Zapis informacji — serializacja RDF

Never forget: only the graph is “real”, the rest is convenience!
Niestety graf RDF jest możliwy do wyrysowania tylko na jednym „poziomie”. Opis klas (RDFS, OWL) nie jest możliwy do zobrazowania na jednym grafie wraz z ich instancjami ponieważ predykat może stać się podmiotem w innym wyrażeniu (opis właściwości właściwości) co nie jest dopuszczalne w grafie.

W rekomendacjach W3C oficjalnym standardem serializacji grafu RDF jest format RDF/XML. Zgodnie z koncepcją „stosu” W3C również RDFS i OWL zapisuje się przez RDF/XML.

Sposób ten jest jednak uważany za kłopotliwy, niejednoznaczny, mało wydajny, nie obrazujący wprost trójek RDF, a ponadto trudny do używania przez człowieka. Stąd potrzeba powstania łatwiejszego formatu. Najpopularniejszy format nie oparty o XML to N3 (Notation 3) oraz jego podzbiory (np. N-Triples) i pochodne (np. Turtle). Istnieją też alternatywne formaty XML, np. TriX.

Typ MIME dla RDF/XML: application/rdf+xml
Nieoficjalne: text/rdf+n3, application/turtle

Format RDF/XML sprawia również wiele kłopotów jako sam XML, np. nie pasuje do żadnego DTD — dopuszcza istnienie zupełnie nieprzewidywalnych elementów (tagów) definiowanych przez użytkownika a nie przez DTD.

Notacje nie XML-owe muszą być nie tylko łatwe do czytania przez człowieka ale (przede wszystkim) muszą nadal pozostać łatwe do parsowania przez program.

Notacja N3 jest również wspierana przez członków W3C. Ten „standard” zawiera znacznie więcej możliwości niż tylko zapis trójek RDF, np. ścieżki, zmienne i reguły logicznego wnioskowania.

TriX to propozycja HP Labs i Nokia.

Zapis informacji — przykład

Przykład (kot Maurycy) ten sam co w prezentacji Sieć Semantyczna jako przyszłość WWW.

Konsekwencje podejścia „Open World

Sieć Semantyczna jest oparta na koncepcji „świata otwartego”, w którym sam fakt, że coś nie zostało powiedziane, nie oznacza jeszcze, że nie jest to prawdą. Stąd specyficzne podejście do znajdywanych informacji — założenie ich niekompletności i wnioski uzupełniające informacje zamiast błędów.

Przykład (fragment ontologii):

<owl:ObjectProperty rdf:ID="hasMother">
  <rdfs:domain rdf:resource="#Person" />
  <rdfs:range rdf:resource="#Woman" />
</owl:ObjectProperty>

<owl:Class rdf:ID="Person">
  <owl:Restriction>
    <owl:onProperty rdf:resource="#hasMother"/>  
    <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
  </owl:Restriction>
</owl:Class>

Zupełnie inna sytuacja niż w przypadku „closed world” jak np. relacyjna baza danych lub model obiektowy.


Podejścia „open” i „closed world” są raczej niemożliwe do równoczesnego stosowania.

Wyszukiwanie informacji w Sieci Semantycznej

Trzy teoretyczne możliwości przeszukiwania informacji zapisanej w RDF:

Pod nieobecność standardu powstały różne języki, np. RQL, RDQL, SeRQL, itd.

Nawet reguły logiczne w N3 mogą być wykorzystywane do wykonywania zapytań, np.:
{?y rdfs:label "foo"} => {?y a :QueryResult}.

Sam zapis wiedzy bez możliwości jej sprawnego wyszukiwania nie ma wiele sensu. Sprawny standard języka wyszukiwania zapewne znacznie rozwój aplikacji Sieci Semantycznej — analogia do SQL-a w bazach danych.


Wyszukiwanie na poziomie syntaktycznym jest możliwe ale w bardzo ograniczonym zakresie — RDFS, a jeszcze bardziej OWL, wprowadza skomplikowane zależności miedzy klasami (hierarchie, klasy definiowane poprzez operacje zbiorowe na innych klasach), które nie wynikają wprost z trójek RDF.

SPARQL

SPARQL Protocol And RDF Query Language — standardowy język zapytań dla danych w RDF oraz protokół przesyłania wyników przez HTTP.

Cztery rodzaje zapytań:

Dla zapytań SELECT i ASK serwis realizujący zapytania SPARQL odpowiada w formacie XML (SPARQL Query Results XML Format, Content-Type: application/sparql-results+xml) a dla zapytań CONSTRUCT i DESCRIBE graf RDF zserializowany do formatu RDF/XML (Content-Type: application/rdf+xml) lub zgodnego, np. N3 (Content-Type: text/rdf+n3).

SPAQRL to jeszcze Working Draft. Istnieją np. niejasności co do zastosowania DESCRIBE — oczekiwania zupełnie inne od SELECT i CONSTRUCT oznaczają być może potrzebę zastosowania zupełnie innego mechanizmu/języka.

SPARQL — przykład

Zasoby Sieci Semantycznej

Informacje dla Sieci Semantycznej już istnieją w dzisiejszym Internecie.

Podstawowe „słowniki”:

  • DC (Dublin Core Metadata Initiative) — podstawowy opis zasobów bibliograficznych
    @prefix dc: http://purl.org/dc/elements/1.1/
  • SKOS (Simple Knowledge Organisation System) — klasyfikacje wiedzy, słowniki, taksonomie, tezaurusy itp. (W3C)
    @prefix skos: http://www.w3.org/2004/02/skos/core#
  • FOAF (Friend of a Friend) — o ludziach i relacjach (znajomościach) między nimi
    @prefix foaf: http://xmlns.com/foaf/0.1/
  • DOAP (Description of a Project) — opis projektów software'owych (głównie open source)
    @prefix doap: http://usefulinc.com/ns/doap#
  • WordNet — przeniesienie bazy leksykalnej języka angielskiego WordNet do RDF
    @prefix wn: http://xmlns.com/wordnet/1.6/

Zbiory ontologii:

Pakiety narzędziowe i platformy programistyczne

Developers Guide to Semantic Web Toolkits — zestawienie bibliotek i „frameworków” dla kilkunastu języków programowania. Różnice:

Na przykład:

  • Redland — biblioteka RDF w C, interfejsy do: C#, Java, Obj-C, Perl, PHP, Python, Ruby, Tcl; brak serwera, brak wnioskowania
  • Jena — Java; współpracuje z serwerem Joseki
  • Sesame — Java; współpracuje z kontenerem serwletów, np. Tomcat
  • RAPPHP; obsługa RAP NetAPI na dowolnym serwerze z PHP, np. Apache
  • RDF Gateway — platforma z własną bazą danych, serwerem HTTP i językiem RSP

Jena — przykłady

Jena powstała w wyniku prac HP Labs Semantic Web Research.


W Jena funkcjonuje określenie „model” w sensie grafu (repozytorium) RDF oraz „statement” w sensie trójki (wyrażenia) RDF. Takie samo (lub podobne) nazewnictwo występuje w innych pakietach, np. RAP (RDF API for PHP). Nie jest to jednak żaden standard, np. w Sesame odpowiednikiem modelu jest „repository” (storage container for RDF).


Metody model.read() i model.write() przyjmują jako parametr lang następujące stałe (wbudowane języki serializacji grafu RDF): RDF/XML, RDF/XML-ABBREV, N-TRIPLE, N3, TURTLE, N3-PP, N3-PLAIN, N3-TRIPLE.


ARQ jako jeden z nielicznych (jeszcze) frameworków obsługuje język zapytań SPARQL w pełnym zakresie zapytań (metody execSelect(), execConstruct(), execDescribe(), execAsk() klasy QueryExecution). Ponadto rozwija się w sposób umożliwiający działanie z zapytaniami SPARQL na poziomie analogicznym jak działanie z SQL w bibliotekach obsługi baz danych, np. klasa QueryExecution.create() przyjmuje parametr intialBinding — efekt podobny do PreparedStatement w JDBC API.

Podsumowanie

Podstawowe wymagania dla działania agentów Sieci Semantycznej zostały już zrealizowane:

Pozostałe problemy i plany rozwoju:

  • poszerzanie wiedzy i ugruntowanie zasad „poprawnego” tworzenia zbiorów RDF i ontologii — W3C SWBP&D WG,
  • udostępnienie istniejących źródeł danych (bazy, strony WWW) dla Sieci Semantycznej (przeniesienie danych do postaci RDF, zwiększenie semantyki stron WWW),
  • sprawne mechanizmy wnioskowania (rozwój podsystemów wnioskowania na podstawie RDFS i OWL w platformach programistycznych),
  • standardowy język opisu reguł (dylemat: „stos” czy „dwie wieże”),
  • przekazywanie zaufania do źródeł danych i ontologii; zaufanie do programów wnioskujących.

Niektóre frameworki nie wspierają wnioskowania w ogóle (jedynie odczyt/zapis/wyszukiwanie RDF), inne wspierają w ograniczonym zakresie (np. tylko RDFS, bez OWL, albo z ograniczonym OWL). Ponadto istniejące mechanizmy wnioskowania są generalnie zbyt mało wydajne do praktycznych zastosowań...


Reguły (wnioskowania) określają wyrażenia, na podstawie których będą wyprowadzane wnioski nie koniecznie wynikające bezpośrednio z ontologii (z opisu rzeczy jako takich), również arbitralnie przyjęte zasady. Mimo, że są to wyrażenia w zbiorze RDF, nie są stwierdzeniami faktów, tak jak pozostałe trójki — mówią raczej „jeżeli zachodzi jakaś zależność to zachodzi inna”, co jeszcze nie oznacza, że pierwsza z nich jest w tej chwili faktem. Faktem obowiązującym jest tylko trójka wyrażająca regułę „{coś jest jakieś} to {coś jest jakieś}”, a nie trójki zawarte w {}.

Pzykład w N3: { :thermostat :temp :high } log:implies { :heating :power "0" } .

Przykład ze zmiennymi: { ?x family:parent ?y . ?y family:brother ?z } => { ?x family:uncle ?z } .

Wprowadzenie opisu reguł może spowodować zmianę „stosu” rekomendacji W3C na „wieże”:

</sw:prezentacja>

 

Dziękuję za uwagę.