## TUTORIAL 1
sprawdzenie czy koncept jest spelanialny --> DL query i equivalent class; jesli nie to pokazuje Nothing na pomaranczowo
klasy dodajemy w classes
rodzic ------> dziecko
(ma dziecko)
rola -> ma dziecko
dziedzina to koncept rodzic
zakres to koncept dziecko
role dodajemy w object properties
topObjectProperty to odpowiednik Thing dla konceptow, wszystko ma chyba od niego dziedziczyc
w rolach ustawiamy domains i range (dziedzina i zakres)
sprawdzanie czy istnieje rodzic ktory nie ma dziecka
Rodzic and not (maDziecko some Thing)
trzeba synchronizowac reasoner co kazda zmiane bo tak i chuj xD
koncept rodzic nie jest dziedzina tylko ograniczeniem roli, cokolwiek to kurwa znaczy
INDYWIDUA -> instancje bazy czyli ABOX
WAŻNE!!!:
wszystkie osobniki wprowadzac jako koncept thing, zaznaczamy thing i klikamy add indyvidual (w zakladce Indywiduals)
przy edycji indyviduals trzeba wylaczac reasoner bo cos sie rozpierdala xD
indywidualsom trzeba okreslac klasy bo on sam sobie tego ofc nie wyciagnie z nazwy
asercje to zdania, wprowadza sie je w indywiduals po zdefiniowaniu indywiduuw i roli, samo se powinno pownioskowac typy potem
na podstawie roli
jakies rzeczy w stylu maImie okresla sie w data properties a nie w ROLACH!!!! (dziedziczy po topDataProperty)
nalezy okreslic dziedzine, ranges to typ czyli np string z builtin datatypes
potem w indywiduals sie dodaje obiektowi data property assertion, znowu daje type np string i normalnie sie wpisuje value, samo sie stworzy wszystko
musimy dodac nazwe do konceptu graWiedzmin3 jesli jej nie ma
trzeba tworzyc rozlacznosci klasy bo inaczej domyslnie maja czesci wspolne i wtedy mozna odjebac ze staryDwor jestWlascicielem barbara, trzeba tam zrobic disjoint w zakladce classes, moze sie odjebac ze ontologia jest niespolna w reasonerze, mozna podejrzec czemu cos se zaprzecza jesli tak jest, jesli tak jest to trzeba wypierdolic z indyviduals zdania ktore rozpierdalaja nam spojnosc, potem trza zsynchronizowac reasoner
JAK SPRAWDZIC DO JAKICH KONCEPTOW NALEZA OSOBNIKI:
DL QUERY -> w query wpisujemy nazwe klasy, po prawej zaznaczamy indyviduals, i pokazuje w results (to pokazuje indywidua)
a zeby zrobic w druga strone trzeba:
robimy koncept wyliczany {barbara} i szukamy ancestor classes po prawej i essa, pokazuje klasy po ktorych dziedziczy
SUPER classes to tylko te najblzsze klasy, ancestor to caly łancuch dziedziczenia
JAK SPRAWDZIC CZY CELINA JEST KURWISKIEM JEBANYM:
`{celina} and KurwiskoJebane
`jesli celina pojawi sie w instances to jest
also w zakladce classes jest punkt members i mozna se sprawdzic obosniki przynalezace
INFORMACJE WYWNIOSKOWANE SA POKAZYWANE NA RZUŁTYM JAK PAPAJ TLE
zapisywac co pare minut bo jebane Protege nie robi kopii zapasowych a potrafi sie ranomowo wyjebać na głupi pysk, zapisujemy w RDF/XML
## TUTORIAL 2:
asercje to generalnie po prostu te zdania w stylu
`celina maDziecko anna
`
dodanie plci:
dodanie konceptu mezczyzna i kobieta dziedziczacego od czlowiek, teraz czesc wspolna dziecko i kobieta lub mezczyzna powstaja koncepty syn albo corka
nalezy ograniczyc zakres roli maSyna do konceptu mezczyzna a zakres roli maCorke do konceptu kobieta
zakres roli maSyna jest rownowazny intersekcji konceptu mezczyzna i konceptu dziecko, nie da sie czegos takiego dodac do zakladki classes, dlatego dodaje sie w Active Ontology do General class axioms (inverse maSyna some Things EquivalentTo Mezczyzna and Dziecko)
Walos kurwo na chuj to pokazujesz jak mozna to zdefiniowac inaczej:
tworzymy koncept Córka: dziedziczy od kobiety + w equivalentTo dodajemy class expression editor "Kobieta and Dziecko"
dzieki temu mozemy
Corka EquivalentTo inverse maCorke some Thing jak to dodamy do general class axioms to to wykryje, ze to zle miejsce i doda to normalnie do Classes do konceptu
wspolna czesc 2 konceptow:
Syn and Corka w DL Query
rola ma brata - robi sie lancuchem ról:
ma Brata -> `inverse ma Dziecko o ma Syna` (o to element lancucha)
adam jest sam dla siebie bratem xDDDD, trzeba by dodac ograniczenie irreflexive (nie może być sama do siebie) ALE
jesli rola wystepuje po prawej stronie łancucha ról (a o b) czyli tutaj b, to nie jest rola prosta i przez to nie mozna jej latwo ograniczyc przez irreflexive, wypierdala reasoner died error
AHA I CHUJ NIE POKAZAL DALEJ JAK TO ZROBIC XDDDDD
rola przechodnia [jesli zachodzi dla (x,y) i (y,z) to zachodzi tez dla (x, z)]:
potomek mojego potomka jest moim potomkiem:
`maPotomka o maPotomka
`
trzeba uwazac na diagramy vienna (czy koncepty sa spelnialne, jesli nie to je wykreslac albo ukladac tak okregi zeby w ogole nie istanialy te obszary )
`inverse maSyna some Corka
` syn ktorego matka jest osoba ktora jest czyjąś córką
`inverse maCorke some Syn
` corki ktorych rodzicem jest ktos kto jest synem
## TUTORIAL 3:
ograniczenia liczebnosciowe:
mozxna dac min do czegos i np. stworzyc wspolwlasnosc
dwa osobniki moga wystepowac pod jedna nazwa, anna i barbara moga oznaczac tego samego osobnika, zeby tego uniknac mozna na przyklad:
* dodac anne jako "different indyvidual " do Indyviduals do membera barbara (duzo klikania jak duzo indywiduów, ale mozna zaznaczyc wszystkie osobniki do jednego i jest to relacja przechodnia wiec sie doda wszedzie)
* moze to wynikac z ontologii: mozna dodac irreflexive do roli ale jezeli obiekty nie maja tej roli to nic nie wskazuje przeciez ze sa innymi indywiduami xD! [napisac maila do walosa, tutorial minuta 19:00]
przy zuywaniu only trzeba ograniczach chyba typ dziedziny czy cos
ograniczenie że skurwysyn ma tylko jeden loft:
(posiadaLokum some Loft) and (posiadaLokum only Loft)
OWA- jezeli czegos nie widac to nie znaczy ze czegos nie ma
open world assumption (nie wiemy celina posiada tylko jeden ale nie wiemy czy nie posiada drugiego wiec jej nie kwalifikuje do tego kurwa), trzeba narzucic celinie ze jest przecietnym obywatelem (ma max 1 lokum) przez co reasoner bedzie w stanie okreslic ze ma tylko ten jebany loft i jest awangardowym mieszkancem
definicja zakresow:
Czlowiek and wiek some int [>=6, <=19] TRZEBA DODAWAC SPACJE NA KONIEC BO INTERPRETER SIE ZESRA XD
przy wpisywaniu value trzeba okreslac typ zmiennej bo sie wypierdoli
## TUTORIAL 4:
Otwieranie sweet essence: nie robimy open tylko import!
NIC NIE MOŻE DZIEDZICZYĆ BEZPOŚREDNIO OD THING ANI TOPOBJECT PROPERTY, NIE WOLNO TEŻ DZIEDZICZYĆ OD MEDIATED RELATION I DZIEDZICZACYCH OD NIEJ
perdurant - rozciagniety w czasie, ma wymiar czasowy
endurant - sa pelne w czasie, poruszaja sie w nim
jedyna rola łącząca endurant z perdurantem to participant
part tylko dla endurant-endurant i perdurant-perdurant
ważne jesty wydzielanie odpowiednich perdurantów z wydarzeń oraz wiązanie atrybutów klasy z nimi
wazne -> robic disjointy na ewentach i processach 17:15
obiekty fizyczny to taki, ktorego sie nie da skopiowac nieodroznialnie od oryginalu (kopia faktury elektroniczmej, bo juz np. kopia rzezby to juz inny fizyczny obiekt)
non physical endurant jest od razu rozdzielny z physical endurant
rola "part" - łączy niby entity z entity ale wcale tak nie jest xDDD
ograniczenia liczebnosciowe:
osobnik typu quality jest zindywidualizowany dla jednego obektu, wiec kazde wydarzenie ma miec swoja date jako obiekt
format dat jako timestamp:
YYYY-MM-DDTHH:MM:SS-00:00
wszystkie osobniki zwiazane ze zdarzerniami powiazanymi ze sprzedarza dla klienta abackiego:
```
wszystkie sprzedaze abackiego:
nabył some {abacki}
albo
nabyl value abacki
------------------------------
osobniki zwiazane ze sprzedarzami abackiego:
inverse zawieraEtapSprzedarzy some (nabyl value abacki)
--------------------------------
powiazane z nimi osobniki:
role maja rozne typy wiec warto skorzystac tutaj z participant od ktorego wszystkie dziedzicza:
inverse participant some (inverse zawieraEtapSprzedarzy some (nabyl value abacki))
---------------------------------
tylko pracownicy:
Pracownik and inverse participant some (inverse zawieraEtapSprzedarzy some (nabyl value abacki))
```
Podaj mi wszystkich klientow ktorych obslugiwal alfacki:
```
inverse nabyl some (zawieraEtapSprzedazy some (participant value alfacki))
```
komu alfacki wydawal towar (dealer pierdolony):
```
inverse nabyl some (zawieraEtapSprzedazy some (wydalTowar value alfacki))
```
subkoncepty konceptu -> sublasses