Każdy kto zetknął się lub zetknie się z koncepcją Semantic Web dość szybko musi zmierzyć się z pojęciem “trójki” (ang. triple) oraz “triplestore” czyli składu trójek. O co chodzi? To pojęcie jest nierozerwalnie związane z tematem, o którym pisałem w poprzednim poście, czyli z ontologiami. Ale po kolei.
Semantyczna trójka to zbiór trzech elementów czyli podmiotu (ang. subject), orzeczenia (ang. predicate) oraz dopełnienia (ang. object). To terminologia znana pewnie każdemu absolwentowi gimnazjum, a może nawet podstawówki. Znana z ćwiczeń wykonywanych głównie w ramach lekcji języka polskiego, a nazywanych “logicznym rozbiorem zdania”. Co prawda części zdania jest więcej niż podane trzy (np. okolicznik), ale nas interesują te właśnie.
Weźmy proste zdanie “Ala ma kota”. Podmiotem jest ‘Ala’, orzeczeniem ‘ma’ (ktoś jeszcze pamięta, że podmiot podkreślało się jedną kreską, a orzeczenie dwiema?
), a dopełnieniem ‘kot’. Tak zbudowana wypowiedź pokazuje relację (orzeczenie) pomiędzy jakąś Alą i jakimś kotem. To właśnie trójka.
Wrócę do poprzedniego posta, w którym pisałem o tym skąd wiemy, że chleba trzeba szukać w sklepie spożywczym. Jak opisać tę wiedzę? I tu właśnie użyjemy ‘trójki’ lub kilku ‘trójek’.
Możemy to zrobić na przykład budując taką trójkę:
Przykład 1:
“Chleb jest sprzedawany w sklepie spożywczym.”
Hmmm.. gdzie tu trójka??
Już pokazuję:
(”Chleb”, ” jestSprzedawanyW”, “SklepSpożywczy”)
W praktyce trójki służące do reprezentowania wiedzy (ang. KR – knowledge representation) tworzą zbiory takich zdań, które nazywamy… ontologiami. A ontologie wypełnione (czy inaczej ’spopulowane’) konkretnymi obiektami tworzą bazy wiedzy. Klasyfikacja, czyli podział na klasy pomiędzy którymi występują określone relacje, zazwyczaj opiera się na jakiejś hierarchii nad-klas i pod-klas.
Więc ontologia, z której skorzysta jakaś aplikacja wnioskująca gdzie kupić chleb pewnie będzie miała przynajmniej takie poziomy klasyfikacji:
Przykład 2:
(”Chleb”, “jestProduktemTypu”, “Pieczywo”) – tu mówimy, że klasa “Pieczywo” jest superklasą (nad-klasą) klasy “Chleb”
(”Pieczywo”, “jestSprzedawanyW”, “SklepSpożywczy”) – tu mówimy, gdzie obiekty klasy “Pieczywo” i jej podklas są sprzedawane
Utworzymy taką konstrukcję choćby po to, żeby łatwo można było rozbudować ontologię o kolejną porcję wiedzy np.:
(”Bułka”, “jestProduktemTypu”, “Pieczywo”)
żeby wiedzieć gdzie kupić bułkę.
I tak oto przy użyciu kilku wypowiedzi w formie ‘podmiot-orzeczenie-dopełnienie’ zapisaliśmy pewną wiedzę. W oparciu o dwa zdania z przykładu 2 możemy wywnioskować, że chleb można kupić w sklepie spożywczym.
No a po co triplestore, czyli magazyn trójek? Po to, żeby zapisywać w nim właśnie takie trójkowe wypowiedzi.
O tym jak w Semantic Web wyglądają takie trójki, co to jest RDF, OWL, co je łączy z XML i jaką rolę odgrywa URI pewnie jeszcze napiszę.