Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:dydaktyka:psi:labs:lab_krr [2019/02/26 23:30] kkutt [3 Wprowadzenie do Wiki o Sztucznej Inteligencji [40 minut]] |
pl:dydaktyka:psi:labs:lab_krr [2019/09/30 20:55] (aktualna) kkutt |
====== LAB: Reprezentacja wiedzy ====== | ====== LAB: Reprezentacja wiedzy ====== |
| |
Celem ćwiczenia jest zapoznanie się z różnymi metodami reprezentacji wiedzy, w szczególności sieciami semantycznymi i reprezentacją strukturalną (Frames). | Celem ćwiczenia jest zapoznanie się z różnymi metodami reprezentacji wiedzy, w szczególności z językiem naturalnym, reprezentacją strukturalną (Frames) i sieciami semantycznymi (a.k.a. grafy wiedzy). |
Druga połowa laboratorium stanowi wstęp do projektu [[..:start#wiki_o_sztucznej_inteligencji|Wiki o Sztucznej Inteligencji]]. | |
| |
===== - Język naturalny [10 minut] ===== | ===== - Do przygotowania ===== |
| |
| * **[ArtInt]** [[https://artint.info/2e/html/ArtInt2e.Ch5.S6.html|Section 5.6: Complete Knowledge Assumption]] |
| * **[ArtInt]** [[https://artint.info/2e/html/ArtInt2e.Ch14.html|Chapter 14: Ontologies and Knowledge-Based Systems]] |
| * **[AIMA]** Chapter 12: Knowledge Representation |
| * [[https://www.w3.org/TR/rdf11-primer/|RDF Framework Primer]] |
| |
| |
| ===== - Język naturalny [15 minut] ===== |
| |
Zanim przejdziemy do zapoznawania się z sieciami semantycznymi i Frames, przyjrzymy się krótko najpowszechniejszemu ze źródeł wiedzy, czyli Wikipedii... | Zanim przejdziemy do zapoznawania się z sieciami semantycznymi i Frames, przyjrzymy się krótko najpowszechniejszemu ze źródeł wiedzy, czyli Wikipedii... |
(pomijamy tutaj kwestię jakości danych! Gdy będziesz przygotowywać coś poważnego, np. artykuł czy pracę inżynierską, skorzystaj z pewniejszych źródeł ;-) ) | (pomijamy tutaj kwestię jakości danych! Gdy będziesz przygotowywać coś poważnego, np. artykuł czy pracę inżynierską, skorzystaj z pewniejszych źródeł ;-) ) |
| |
**ZADANIE:** Twoim zadaniem na początek aktualnego laboratorium będzie przygotowanie takiego zestawienia na temat **15 największych pod względem liczby ludności krajów Europy** na podstawie [[http://pl.wikipedia.org/|polskiej edycji Wikipedii]]. Na potrzeby tego ćwiczenia NIE korzystaj z innych stron internetowych + NIE korzystaj z zestawień już dostępnych w Wikipedii (o ile takie są). | **ZADANIE:** Twoim zadaniem na początek aktualnego laboratorium będzie przygotowanie takiego zestawienia na temat **15 największych pod względem liczby ludności krajów Europy** na podstawie [[http://pl.wikipedia.org/|polskiej edycji Wikipedii]]. Na potrzeby tego ćwiczenia NIE korzystaj z innych stron internetowych + NIE korzystaj z zestawień już dostępnych w Wikipedii, bo są co najmniej dwa takie zestawienia i mają różne nieaktualne liczby (//stan na 30.09.2019//): |
| * Sekcja Podział polityczny na stronie opisującej Europę: [[http://pl.wikipedia.org/wiki/Europa#Podział_polityczny_Europy]] |
| * Strona z zestawieniem państw europejskich: [[http://pl.wikipedia.org/wiki/Państwa_Europy]] |
| |
==== Język naturalny jako metoda reprezentacji wiedzy? ==== | ==== Język naturalny jako metoda reprezentacji wiedzy? ==== |
| |
| |
===== Baza Wiedzy = TBox + ABox [10 minut] ===== | ===== - Baza Wiedzy = TBox + ABox [10 minut] ===== |
| |
Niezależnie od tego z jakiej reprezentacji wiedzy korzystamy, naszą bazę wiedzy możemy podzielić na dwie główne składowe: TBox i ABox (pochodzące z Logik Opisowych, //Description Logics//). | Niezależnie od tego z jakiej reprezentacji wiedzy korzystamy, naszą bazę wiedzy możemy podzielić na dwie główne składowe: TBox i ABox (pochodzące z Logik Opisowych, //Description Logics//). |
| |
**ZADANIE:** stwórz Bazę Wiedzy (TBoxa i ABoxa) reprezentującą zestawienie przygotowane w [[#zestawienie_na_bazie_wikipedii|poprzedniej sekcji]] (lub jego fragment jeżeli będzie mało czasu). | **ZADANIE:** stwórz Bazę Wiedzy (TBoxa i ABoxa) reprezentującą zestawienie przygotowane w [[#zestawienie_na_bazie_wikipedii|poprzedniej sekcji]] (lub jego fragment jeżeli będzie mało czasu). |
| |
| |
| ===== - Frames [10 minut] ===== |
| |
| Podsumujmy to co robiliśmy: |
| * wiedza reprezentowana w postaci języka naturalnego jest zrozumiała dla użytkowników, nie wymaga żadnego przygotowania (jest to język naturalny -> rozumie się go naturalnie :-) ), ale nie pozwala na żadne wnioskowanie automatyczne, |
| * po zapisaniu wiedzy w postaci TBoxa i ABoxa wiedza przyjęła jakąś strukturę (narzucaną poprzez TBoxa) i moglibyśmy się pokusić o przepisanie jej np. w postaci klauzul i faktów języka Prolog -> pozwoliłoby to na wnioskowanie i byłoby pewnie w porządku, ale... |
| * dane, które opracowujemy to wiele faktów dotyczących niewielkiej liczby obiektów: w postaci ABoxa z poprzedniej sekcji, jak również w postaci faktów języka Prolog, moglibyśmy uzyskać chaotyczną mieszankę danych, która mogłaby stać się w ogóle nieczytelna dla użytkowników; np. trudno byłoby określić czy dla danego obiektu mamy już określone wszystkie właściwości... |
| |
| Tutaj pojawiają się **Ramki (Frames)**: |
| * Jest to strukturalna reprezentacja wiedzy: fakty są pogrupowane w odpowiednie struktury opisujące obiekty. |
| * Każda ramka składa się ze slotów reprezentujących różne fakty dotyczące danego obiektu (w poniższym przykładzie sloty są kolejnymi __wierszami__ tabel). |
| * Każdy ze slotów zawiera informacje o aktualnej wartości, wartości domyślnej oraz procedurze wykonywanej w czasie aktualizacji wartości (np. sprawdzenie czy ssak nie ma więcej niż 4 nogi, jak w przykładzie poniżej). |
| * Ramki zawierają również informacje o relacjach z innymi ramkami, w szczególności informacje o byciu pojęciem bardziej ogólnym / bardziej szczegółowym względem innej ramki (w poniższym przykładzie jest to slot ''jest-rodzaju''). W przypadku relacji dziedziczenia, ''dzieci'' dziedziczą sloty rodziców i mogą je nadpisywać, albo przyjąć wartości określone w rodzicach (np. KRÓLIK zostawia slot ''nogi'' nienaruszony, a MAŁPA nadpisuje jego wartość). |
| |
| Przeanalizuj poniższy przykład: |
| |
| | SSAK |||| |
| | ^ wartość ^ domyślna ^ aktualizacja ^ |
| ^ skóra | futro | | | |
| ^ narodziny | żywy | | | |
| ^ nogi | | 4 | ''sprawdź-nogi'' | |
| |
| sprawdź-nogi: wartość <= 4 |
| |
| | KRÓLIK |||| |
| | ^ wartość ^ domyślna ^ aktualizacja ^ |
| ^ jest-rodzaju | SSAK | | | |
| ^ uszy | | długie | | |
| ^ ruch | skoki | | | |
| |
| | MAŁPA |||| |
| | ^ wartość ^ domyślna ^ aktualizacja ^ |
| ^ jest-rodzaju | SSAK | | | |
| ^ nogi | 2 | | | |
| ^ ulubione-pożywienie | | banany | | |
| |
| Ustrukturyzowanie wiedzy w postaci ramek pozwala na: |
| * uzyskanie czytelnej reprezentacji wiedzy, |
| * uzupełnienie wiedzy o wartości domyślne oraz procedury wywoływane w trakcie aktualizacji danych (przydatne np. w finansach, gdy np. przy zlecaniu przelewu wywoływane są odpowiednie procedury sprawdzające czy jest on możliwy i naliczane są odpowiednie opłaty), |
| * przeprowadzenie wnioskowania polegającego na wyszukiwaniu ramek pasujących do wzorca wyszukiwania. |
| |
| **ZADANIE:** Przygotuj 3-5 ramek dla opracowywanego przez siebie zestawienia z poprzednich sekcji. Zauważ, że mogą przydać Ci się tutaj TBox i ABox stworzone w poprzedniej sekcji. W jaki sposób? |
| |
| **PYTANIE dodatkowe:** czy znasz jakieś elementy inżynierii oprogramowania, które są podobne do Ramek? |
| |
| |
| |
==== Problem z Wikipedią (dla zainteresowanych) ==== | ==== Problem z Wikipedią (dla zainteresowanych) ==== |
| |
Spójrzmy teraz w trzy różne miejsca w polskiej edycji Wikipedii i spróbujmy określić ile osób mieszka w Polsce: | |
* Strona opisująca Polskę: http://pl.wikipedia.org/wiki/Polska | |
* Sekcja Podział polityczny na stronie opisującej Europę: http://pl.wikipedia.org/wiki/Europa#Podział_polityczny_Europy | |
* Strona z zestawieniem państw europejskich: http://pl.wikipedia.org/wiki/Pa%C5%84stwa_Europy | |
| |
Na każdej z tych stron jest inna liczba (//stan na 25.02.2019//), ponieważ wszystko jest tworzone ręcznie, co nie pozwala na automatyczne przetwarzanie wiedzy! | |
| |
Wyobraźmy sobie teraz sytuację, w której Nowa Huta ogłasza niepodległość od Polski i staje się osobnym państwem. Co trzeba zmienić w wikipedii? **Na pewno strony z opisem Krakowa i Polski (zmniejszy się liczba ludności), na pewno trzeba dodać stronę z opisem nowego "Państwa nowohuckiego".** Poza tym trzeba będzie poprawić zestawienie miast Polski (liczba ludności Krakowa), zestawienie największych miast na stronie Polski (liczba ludności Krakowa), stronę z zestawieniem państw europejskich (doszło nowe państwo), stronę z podziałem politycznym na stronie Europy (nowe państwo), i pewnie jeszcze wiele innych... | Wyobraźmy sobie teraz sytuację, w której Nowa Huta ogłasza niepodległość od Polski i staje się osobnym państwem. Co trzeba zmienić w wikipedii? **Na pewno strony z opisem Krakowa i Polski (zmniejszy się liczba ludności), na pewno trzeba dodać stronę z opisem nowego "Państwa nowohuckiego".** Poza tym trzeba będzie poprawić zestawienie miast Polski (liczba ludności Krakowa), zestawienie największych miast na stronie Polski (liczba ludności Krakowa), stronę z zestawieniem państw europejskich (doszło nowe państwo), stronę z podziałem politycznym na stronie Europy (nowe państwo), i pewnie jeszcze wiele innych... |
| |
| |
===== - Wprowadzenie do "Wiki o Sztucznej Inteligencji" [40 minut] ===== | ===== - SPARQL Endpoint i DBpedia [20 minut] ===== |
| |
Nasz projekt "Wiki o Sztucznej Inteligencji" będzie rozwijany w semantycznej wiki. Semantyczna Wiki to [[wp>wiki|wiki]] z możliwością modelowania wiedzy w postaci grafów trójkowych. W ramach wprowadzenia dowiemy się jak korzystać z semantycznej wiki Semantic MediaWiki, którą będziemy wykorzystywać w czasie semestru. | * Do odpytywania grafowych baz wiedzy służy język SPARQL - podobny do SQLa, którego już znasz. Możemy używać języka SPARQL m.in. do odpytywania specjalnych web service'ów nazywanych SPARQL Endpoint, które umożliwiają wyciąganie wiedzy z podpiętego grafu wiedzy. |
| * W tej sekcji skorzystamy z SPARQL Endpointa udostępnianego przez projekt [[http://dbpedia.org/|DBpedia]] pod adresem **''<nowiki>http://dbpedia.org/sparql</nowiki>''**. |
| |
(Uwaga -- punkty, które są konkretnymi zadaniami są oznaczone wykrzyknikiem :!:) | - DBpedia jest zrzutem z Wikipedii otagowanym z użyciem notacji trójkowej. Powinny być więc tam jakieś informacje o Polsce. Ale jak się do nich dostać? \\ Nie znamy identyfikatora (URI) Polski, ale wiemy, że jest coś co ma nazwę Polska i wiemy, że istnieje relacja ''rdfs:label'', która łączy obiekt z jego nazwą. Może to zadziała? Spróbujmy! |
| - Otwórz **[[http://yasgui.org/|YASGUI]]** - klienta pozwalającego na wykonywanie zapytań do SPARQL Endpointów. |
| - Co wiemy? Jest coś co ma jakieś URI (''?country''), które powinno być powiązane relacją ''rdfs:label'' z obiektem ''"Polska"@pl''. Można to łatwo przetłumaczyć do notacji trójkowej: <code>?country rdfs:label "Polska"@pl .</code> |
| - Aby wykonać to zapytanie, wpisz URI ''<nowiki>http://dbpedia.org/sparql</nowiki>'' w liście wyboru na górze. |
| - Następnie wpisz pełne zapytanie:<code>PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> |
| SELECT ?country |
| WHERE { |
| ?country rdfs:label "Polska"@pl . |
| }</code> |
| - Sukces! Istnieje coś co ma ''rdfs:label'' ''"Polska"@pl''! \\ **ZADANIE:** Teraz rozszerz to zapytanie tak, aby pobrać informację o populacji Polski. |
| - **ZADANIE:** Rozszerz zapytanie jeszcze bardziej i przygotuj listę 10 największych państw europejskich pod względem populacji. |
| |
- :!: Na początek zaloguj się do specjalnie przygotowanej instancji [[..:#wiki_o_sztucznej_inteligencji|wiki]] za pomocą loginu i hasła od prowadzącego. | |
- Wiki o Sztucznej Inteligencji (w skrócie WSI) to przede wszystkim wiki, więc pozwala na tworzenie stron przy użyciu prostego markupu: | |
* :!: Wejdź na stronę [[https://krzysztof.kutt.pl/psi-wiki/index.php/Użytkownik:[login] ]] w miejscu ''[login]'' wpisując swój login do wiki (możesz również kliknąć w nazwę swojego użytkownika w górnym menu wiki) | |
* :!: Na początek napisz o sobie: opisz obok kogo aktualnie siedzisz (podlinkuj jej/jego stronę wiki), jaki przedmiot Ci się najbardziej podobał na studiach, co lubisz jeść, czy spodziewasz się hiszpańskiej inkwizycji itd. | |
* Przydatny fragment dokumentacji MediaWiki opisujący markup wiki: [[https://www.mediawiki.org/wiki/Help:Formatting|Formatting]] (zobacz również sekcję "Other formatting" po więcej szczegółów odnośnie linków, obrazów, itd | |
- Wiki jest **semantyczna**, co oznacza, że wykorzystując specjalny markup można do niej dodawać wiedzę w postaci trójek podmiot-orzeczenie-dopełnienie: | |
* W przypadku wiki: **podmiot to zawsze strona, na której się znajdujemy**. | |
* Możemy tworzyć adnotacje trzech typów: | |
* **Kategorie** -- do tworzenia hierarchii, grupowania stron wiki, np. wpisując na swojej stronie ''<nowiki>[[Category:Osoba]]</nowiki>'', tworzymy trójkę [user] -> Category -> Osoba. | |
* **Object properties** -- relacje do innych stron wiki: dla użytkownika oglądającego stronę wyglądają jak zwykłe linki, ale niosą dodatkową informację o znaczeniu tego linku, porównaj: ''<nowiki>[[Użytkownik:kkutt]]</nowiki>'' i ''<nowiki>[[Siedzi obok::Użytkownik:kkutt]]</nowiki>'' -- obydwa wyglądają tak samo (są linkami do strony ''Użytkownik:kkutt''), ale to drugie dodatkowo jeszcze przechowuje informację o nazwie tego powiązania tworząc trójkę: [user] -> ''Siedzi obok'' -> ''Użytkownik:kkutt'' | |
* **Data properties** -- relacje do stałych (stringów, liczb itd.), porównaj: ''<nowiki>Jestem Wojtek i mam 12 lat</nowiki>'' i ''<nowiki>Jestem [[Imię::Wojtek]] i mam [[Wiek::12]] lat</nowiki>''. Powinnaś/Powinieneś rozumieć już różnicę :-) | |
* Uwaga: tak, słuszne jest Twoje skonfudowanie -- tworzenie Object properties i Data properties wygląda dokładnie tak samo. Jak system ma rozróżniać, że jedno jest stroną, a drugie jest stałą? W wiki mamy możliwość definiowania typów -- możemy zdefiniować np. fakt, że Wiek jest liczbą, co później jest wykorzystywane przy przetwarzaniu adnotacji (wyświetlanie, sortowanie wyników itd.): | |
* Zobacz źródło [[https://krzysztof.kutt.pl/psi-wiki/index.php/Atrybut:Wiek|strony]] -- to co tutaj stworzyliśmy to kolejna trójka! Atrybut:Wiek -> Has type -> Number! | |
* Typy są wykorzystywane również do walidacji poprawności wpisanych danych, np. umieszczenie na stronie fragmentu ''<nowiki>[[Wiek::lat]]</nowiki>'' spowoduje wyświetlenie żółtego wykrzyknika (po zapisaniu strony) i odpowiedniego ostrzeżenia. | |
* Więcej o adnotacjach możesz przeczytać w [[https://www.semantic-mediawiki.org/wiki/Help:In-text_annotation|dokumentacji]]. | |
* :!: Teraz dodaj adnotacje każdego z trzech rodzajów do swojej strony! :-) | |
- Istniejącą bazę wiedzy **możemy przetwarzać**: | |
* Na początek: możemy tworzyć zestawienia, które są zawsze aktualne (aktualizowane podczas odświeżenia strony) -- co rozwiązuje problem z Wikipedią, który dzisiaj widzieliśmy. | |
* :!: Korzystając z przykładów zawartych w [[https://www.semantic-mediawiki.org/wiki/Help:Inline_queries|dokumentacji]], stwórz na swojej stronie proste zapytanie ''#ask'', które będzie wyświetlało wszystkie osoby (kategoria Osoba) i ich Wiek. | |
* Możemy każdą informację umieścić tylko JEDEN raz, a później się na nią powoływać (bo możemy ją łatwo wyciągnąć). Może to być nawet niewidoczne dla użytkownika czytającego wiki (dopóki nie zerknie do źródła strony). | |
* :!: Na swojej stronie dopisz zdanie ''<nowiki>Przypominam, że mam {{#show: [FIXME]}} lat!</nowiki>'' - zamień ''<nowiki>[FIXME]</nowiki>'' na odpowiedni kod, aby wyświetliła się tam wartość Wieku, która jest wpisana na Twojej stronie gdzieś wcześniej. Skorzystaj z [[https://www.semantic-mediawiki.org/wiki/Help:Inline_queries#Parser_function_.23show|dokumentacji]]. | |
* Pozwala to na łatwe wyciąganie bardziej skomplikowanych informacji (to przećwiczymy w trakcie semestru, gdy wiki będzie się bardziej rozrastać), łączenie danych z różnych źródeł (zarówno włączanie danych zewnętrznych do stron w wiki, jak i udostępnianie na zewnątrz wiedzy zawartej w wiki przez odpowiednie API, tzw. SPARQL Endpoint) czy eksport bazy wiedzy do CSV/JSON/itd. | |
- Najważniejsze podstawy już masz -- teraz pytanie: jak konkretnie będzie wyglądać tworzenie Wiki o sztucznej inteligencji? | |
* **Tekst:** strony są tworzone przez Was dla Was! Mają być napisane takim językiem, abyście je zrozumieli :-) | |
* **Kategorie:** dowolnie, zdaję się na intuicję | |
* **Properties:** | |
* Przygotowałem zbiór właściwości ułatwiających zarządzanie/ocenę wiki -- są zebrane w postaci tabelki na przykładowej stronie: [[https://krzysztof.kutt.pl/psi-wiki/index.php/Affective_Computing]] | |
* :!: Przejrzyj te Properties -- czy rozumiesz każde z nich? Pamiętaj, że możesz kliknąć na nazwę property w tabelce "Fakty", aby zobaczyć dokładniejszy opis. | |
* Dodatkowo istnieje atrybut [[https://krzysztof.kutt.pl/psi-wiki/index.php/Atrybut:Powiązane_z|Powiązane z]] obrazujący ogólną relację pomiędzy dwiema stronami. Można tę zależność bardziej precyzować definiując bardziej szczegółowe pod-atrybuty. Zobacz [[https://www.semantic-mediawiki.org/wiki/Help:Special_property_Subproperty_of|dokumentację Subproperty of]] | |
* Oczywiście możesz też tworzyć nowe Property w miarę potrzeb -- wiesz jak! | |
- Czy potrafisz już przygotować stronę wiki o nazwie "Kartkówka Lab 2", na której pojawi się automatycznie aktualizowane zestawienie stron, które należy przeczytać przed kartkówką na kolejnych zajęciach? | |
- Jeżeli chcesz jeszcze pobawić się wiki to możesz skorzystać też z [[https://sandbox.semantic-mediawiki.org/wiki/Main_Page|Sandboxa Semantic MediaWiki]] | |
| |
===== - Frames [10 minut] (jeżeli wystarczy czasu) ===== | |
| |
Podsumujmy to co robiliśmy: | |
* wiedza reprezentowana w postaci języka naturalnego jest zrozumiała dla użytkowników, nie wymaga żadnego przygotowania (jest to język naturalny -> rozumie się go naturalnie :-) ), ale nie pozwala na żadne wnioskowanie automatyczne, | |
* po zapisaniu wiedzy w postaci TBoxa i ABoxa wiedza przyjęła jakąś strukturę (narzucaną poprzez TBoxa) i moglibyśmy się pokusić o przepisanie jej np. w postaci klauzul i faktów języka Prolog -> pozwoliłoby to na wnioskowanie i byłoby pewnie w porządku, ale... | |
* dane, które opracowujemy to wiele faktów dotyczących niewielkiej liczby obiektów: w postaci ABoxa z poprzedniej sekcji, jak również w postaci faktów języka Prolog, moglibyśmy uzyskać chaotyczną mieszankę danych, która mogłaby stać się w ogóle nieczytelna dla użytkowników; np. trudno byłoby określić czy dla danego obiektu mamy już określone wszystkie właściwości... | |
| |
Tutaj pojawiają się **Ramki (Frames)**: | |
* Jest to strukturalna reprezentacja wiedzy: fakty są pogrupowane w odpowiednie struktury opisujące obiekty. | |
* Każda ramka składa się ze slotów reprezentujących różne fakty dotyczące danego obiektu (w poniższym przykładzie sloty są kolejnymi __wierszami__ tabel). | |
* Każdy ze slotów zawiera informacje o aktualnej wartości, wartości domyślnej oraz procedurze wykonywanej w czasie aktualizacji wartości (np. sprawdzenie czy ssak nie ma więcej niż 4 nogi, jak w przykładzie poniżej). | |
* Ramki zawierają również informacje o relacjach z innymi ramkami, w szczególności informacje o byciu pojęciem bardziej ogólnym / bardziej szczegółowym względem innej ramki (w poniższym przykładzie jest to slot ''jest-rodzaju''). W przypadku relacji dziedziczenia, ''dzieci'' dziedziczą sloty rodziców i mogą je nadpisywać, albo przyjąć wartości określone w rodzicach (np. KRÓLIK zostawia slot ''nogi'' nienaruszony, a MAŁPA nadpisuje jego wartość). | |
| |
Przeanalizuj poniższy przykład: | |
| |
| SSAK |||| | |
| ^ wartość ^ domyślna ^ aktualizacja ^ | |
^ skóra | futro | | | | |
^ narodziny | żywy | | | | |
^ nogi | | 4 | ''sprawdź-nogi'' | | |
| |
sprawdź-nogi: wartość <= 4 | |
| |
| KRÓLIK |||| | |
| ^ wartość ^ domyślna ^ aktualizacja ^ | |
^ jest-rodzaju | SSAK | | | | |
^ uszy | | długie | | | |
^ ruch | skoki | | | | |
| |
| MAŁPA |||| | |
| ^ wartość ^ domyślna ^ aktualizacja ^ | |
^ jest-rodzaju | SSAK | | | | |
^ nogi | 2 | | | | |
^ ulubione-pożywienie | | banany | | | |
| |
Ustrukturyzowanie wiedzy w postaci ramek pozwala na: | |
* uzyskanie czytelnej reprezentacji wiedzy, | |
* uzupełnienie wiedzy o wartości domyślne oraz procedury wywoływane w trakcie aktualizacji danych (przydatne np. w finansach, gdy np. przy zlecaniu przelewu wywoływane są odpowiednie procedury sprawdzające czy jest on możliwy i naliczane są odpowiednie opłaty), | |
* przeprowadzenie wnioskowania polegającego na wyszukiwaniu ramek pasujących do wzorca wyszukiwania. | |
| |
**ZADANIE:** Przygotuj 3-5 ramek dla opracowywanego przez siebie zestawienia z poprzednich sekcji. Zauważ, że mogą przydać Ci się tutaj TBox i ABox stworzone w poprzedniej sekcji. W jaki sposób? | |
| |
**PYTANIE dodatkowe:** czy znasz jakieś elementy inżynierii oprogramowania, które są podobne do Ramek? | |
| |
| |
* Strona główna DBpedii: [[http://wiki.dbpedia.org/]] | * Strona główna DBpedii: [[http://wiki.dbpedia.org/]] |
* Szczegółowe informacje dotyczące zapisu trójkowego (formalnie jest to notacja RDF): [[http://www.w3.org/RDF/]] | * Szczegółowe informacje dotyczące zapisu trójkowego (formalnie jest to notacja RDF): [[http://www.w3.org/RDF/]] |
* Prosty graficzny edytor trójek przygotowany przez p. Artura Smaronia, absolwenta Informatyki: [[http://student.agh.edu.pl/~arturs/SemWebEditor/]] | * Prosty graficzny edytor trójek przygotowany przez p. Artura Smaronia, absolwenta Informatyki: [[https://loki.re/RDFeditor/]] |
* W jaki sposób sprawić, by Google "rozumiał" zawartość Twojej strony internetowej: [[https://developers.google.com/structured-data/|Structured Data Markup]] | * W jaki sposób sprawić, by Google "rozumiał" zawartość Twojej strony internetowej: [[https://developers.google.com/structured-data/|Structured Data Markup]] |