Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
pl:dydaktyka:psi:labs:lab_krr [2019/06/27 15:50]
127.0.0.1 edycja zewnętrzna
pl:dydaktyka:psi:labs:lab_krr [2019/09/30 20:55]
kkutt
Linia 1: Linia 1:
 ====== 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.agrafy 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...
Linia 13: Linia 20:
 (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? ====
Linia 27: Linia 36:
  
  
-===== 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//).
Linia 47: Linia 56:
  
 **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?
  
  
Linia 97: Linia 151:
  
 ==== 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...
Linia 117: Linia 164:
  
  
-===== - 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 wikiSemantyczna Wiki to [[wp>​wiki|wiki]] z możliwością modelowania ​wiedzy ​w postaci grafów trójkowych. W ramach wprowadzenia dowiemy się jak korzystać ​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ż znaszMoż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. 
 +  * tej sekcji skorzystamy ​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>​ 
 +  - SukcesIstnieje 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? 
  
  
Linia 208: Linia 190:
   * 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]]
pl/dydaktyka/psi/labs/lab_krr.txt · ostatnio zmienione: 2019/09/30 20:55 przez kkutt
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0