===== Wprowadzenie do "Wiki o Sztucznej Inteligencji" ===== 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. (Uwaga -- punkty, które są konkretnymi zadaniami są oznaczone wykrzyknikiem :!:) - :!: Na początek zaloguj się do specjalnie przygotowanej instancji wiki ([[..:|adres znajduje się na stronie głównej przedmiotu]]) 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 ''[[Category:Osoba]]'', 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: ''[[Użytkownik:kkutt]]'' i ''[[Siedzi obok::Użytkownik:kkutt]]'' -- 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: ''Jestem Wojtek i mam 12 lat'' i ''Jestem [[Imię::Wojtek]] i mam [[Wiek::12]] lat''. 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 ''[[Wiek::lat]]'' 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 ''Przypominam, że mam {{#show: [FIXME]}} lat!'' - zamień ''[FIXME]'' 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. - Strona, na której wprowadzono wszystkie rzeczy opisane w powyższej instrukcji: [[https://krzysztof.kutt.pl/psi-wiki/index.php/U%C5%BCytkownik:Kkutt]] -- **koniecznie zobacz źródło strony [kliknij "Edytuj"] -- tam dzieje się największa magia!** - 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]]