===== 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]]