Hatékony keresés a szemantikus világhálón



Hasonló dokumentumok
matematikus-informatikus szemével

A szemantikus világháló oktatása

Ontológiák és adatbázisok következtetés nyílt és zárt világokban

Leíró Logikai Programozás

A Szemantikus világháló alapjai

Szemantikus világháló a BME-n

Ontológiák, 2. Leíró logikák. Kooperáció és intelligencia, DT-MT, BME-MIT

Legyen Ön is milliomos, kedves Számítógép!

Prolog alapú következtetés

Mi is volt ez? és hogy is volt ez?

Bevezetés s a szemantikus technológi

Contents. 1 Bevezetés 11

Ismeretalapú modellezés XI. Leíró logikák

Logika és informatikai alkalmazásai kiskérdések február Mikor mondjuk, hogy az F formula a G-nek részformulája?

ÍTÉLETKALKULUS (NULLADRENDŰ LOGIKA)

Név: Neptun kód: április

A logikai következmény

Tudásalapú információ integráció

Logikai programozás ADMINISZTRATÍV KÉRDÉSEK KÖVETELMÉNYRENDSZER FŐBB PONTOK NÉHÁNY BIZTATÓ SZÓ

Algoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y.

Szemantikus Web Semantic Web A szemantikus web alkalmas megközelítés, illetve megfelel nyelvekkel, eszközökkel támogatja az intelligens információs

Logikai ágens, lehetőségek és problémák 2

Ontológiák és alkalmazásuk orvosi területen

A TANTÁRGY ADATLAPJA

Kaposi Ambrus. University of Nottingham Functional Programming Lab. Hackerspace Budapest január 6.

SZÁMÍTÁSELMÉLETI SZAKIRÁNY A BME MÉRNÖK-INFORMATIKUS MSC KÉPZÉSÉBEN

Szemantikus Web Semantic Web A szemantikus web alkalmas megközelítés, illetve megfelel nyelvekkel, eszközökkel támogatja az intelligens információs

Emerald: Integrált jogi modellező keretrendszer

Predikátumkalkulus. 1. Bevezet. 2. Predikátumkalkulus, formalizálás. Predikátumkalkulus alapfogalmai, formalizálás, tagadás, logikailag igaz formulák.

Tipikus időbeli internetezői profilok nagyméretű webes naplóállományok alapján

Számítógéppel segített folyamatmodellezés p. 1/20

Célkitűzés Megoldandó feladatok A tesztkörnyezet komponensei V&V folyamatok Eszközintegrációs szintek. Megfelelőség tanúsítása modell alapon

Csima Judit október 24.

Algoritmusok Tervezése. Fuzzy rendszerek Dr. Bécsi Tamás

Elsőrendű logika. Mesterséges intelligencia március 28.

Teszt generálás webes alkalmazásokhoz

1. Tétel - Az ítéletkalkulus alapfogalmai

Magyarok: Bereczki Ilona, Kalmár László, Neumann, Péter Rózsa, Pásztorné Varga Katalin, Urbán János, Lovász László

Tartalomjegyzék. Köszönetnyilvánítás. 1. Az alapok 1

Formális szemantika. Kifejezések szemantikája. Horpácsi Dániel ELTE Informatikai Kar

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

LOGIKA. Magyarok: Bereczki Ilona, Kalmár László, Neumann, Péter Rózsa, Pásztorné Varga Katalin, Urbán János, Lovász László.

Adatbázis rendszerek Definíciók:

Java I. A Java programozási nyelv

Logika es sz am ıt aselm elet I. r esz Logika Hatodik el oad as 1/33

Alapszintű formalizmusok

Funkcionális és logikai programozás. { Márton Gyöngyvér, 2012} { Sapientia, Erdélyi Magyar Tudományegyetem }

Folyamatmodellezés és eszközei. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Algoritmuselmélet. Függvények nagyságrendje, elágazás és korlátozás, dinamikus programozás. Katona Gyula Y.

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 13.

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

LOGIKA ÉS ÉRVELÉSTECHNIKA

Adatbázis rendszerek 2. előadás. Relációs algebra

Genetikus algoritmusok

Számítógép és programozás 2

Bizonytalanság. Mesterséges intelligencia április 4.

Hely- és kontextusfüggő alkalmazások fejlesztését támogató keretrendszer mobil környezetben

Logikai következmény, tautológia, inkonzisztens, logikai ekvivalencia, normálformák

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Predikátumkalkulus. Predikátumkalkulus alapfogalmai, formalizálás, tagadás, logikailag igaz formulák. Vizsgáljuk meg a következ két kijelentést.

Algoritmuselmélet. Mélységi keresés és alkalmazásai. Katona Gyula Y.

Gyakorló feladatok: Formális modellek, temporális logikák, modellellenőrzés. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Diszkrét matematika I.

- Adat, információ, tudás definíciói, összefüggéseik reprezentációtípusok Részletesebben a téma az AI alapjai című tárgyban

Algoritmuselmélet. 2-3 fák. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 8.

Mesterséges Intelligencia MI

DECOS Nemzeti Nap október 15. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Számonkérési formák a BME-n a Deklaratív programozás című tárgyban

3. Az ítéletlogika szemantikája

Tudásalapú információ-kereső rendszerek elemzése és kifejlesztése

Alapszintű formalizmusok

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

Adatbázismodellek. 1. ábra Hierarchikus modell

BIZONYTALAN INFORMÁCIÓK KEZELÉSE LOGIKAI ADATMODELLEKBEN

SAT probléma kielégíthetőségének vizsgálata. masszív parallel. mesterséges neurális hálózat alkalmazásával

Regresszió. Csorba János. Nagyméretű adathalmazok kezelése március 31.

Diszkrét matematika I.

Pozícióinformáció. Sikeres helyfüggő szolgáltatások mobilra

Valószínűségi modellellenőrzés Markov döntési folyamatokkal

Ontológia nyelvek (Szemantikus Világhálótól...)

, , A

Adatbázisok elmélete 12. előadás

Miskolci Egyetem Gépészmérnöki és Informatikai Kar Informatikai Intézet Alkalmazott Informatikai Intézeti Tanszék

Mesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2007/2008

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

ADATBÁZIS-KEZELÉS. Adatbázis-kezelő rendszerek

Formális módszerek GM_IN003_1 Program verifikálás, formalizmusok

ADATBÁZIS-KEZELÉS. Relációs modell

Intelligens Rendszerek I. Tudásábrázolás formális logikával

ADATBÁZIS-KEZELÉS. Relációalgebra, 5NF

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

Logika es sz am ıt aselm elet I. r esz Logika 1/36

Logika és informatikai alkalmazásai

Osztott jáva programok automatikus tesztelése. Matkó Imre BBTE, Kolozsvár Informatika szak, IV. Év 2007 január

Gyakorló feladatok adatbányászati technikák tantárgyhoz

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Általános algoritmustervezési módszerek

Fülöp Csaba, Kovács László, Micsik András

Logikai ágensek. Mesterséges intelligencia március 21.

1. előadás Alapfogalmak Modellezés, a Bachman-féle fogalomrendszer, adatmodell,

Átírás:

Hatékony keresés a szemantikus világhálón Lukácsy Gergely Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem Magyarországi Web Konferencia 2008 W3C szekció Lukácsy Gergely (BME) Hatékony keresés a szemantikus világhálón 2008. április 26. 1 / 17

Motiváció A Szemantikus Világháló két alapötlete adjunk metainformációkat (egységes alakban) erőforrásokról adatszinten: adott képen egy delfin látható sémaszinten: a delfinek állatok (metainformációk eddig is voltak: oldalak fontossága, egyes kigyűjtött kifejezésekről azok helye/előfordulási gyakorisága, horgony, Word dokumentumok, képek) következtessünk a metainformációkon Szemantikus keresés A keresés során vegyük figyelembe a dokumentumok és a felhasználói kérdés jelentését Információkeresés dokumentumok keresése helyett Kapcsolódó terület: szemantikus keresés meglévő információforrások (adatbázisok) felett Jellemzően: nagyon sok adat és kevés háttértudás Lukácsy Gergely (BME) Hatékony keresés a szemantikus világhálón 2008. április 26. 2 / 17

Az előadás vázlata 0 Bevezetés - matematikai alapok Logikai programozás Leíró logikák (Description Logics DL) 1 Hatékony nyílt világ következtetés leíró logikákon A PTTP specializálása DL klózokra DL klózok fordítása Prolog programmá A fordítás optimalizálása A DLog rendszer megvalósítása 2 Összefoglalás Lukácsy Gergely (BME) Hatékony keresés a szemantikus világhálón 2008. április 26. 3 / 17

Az előadás vázlata 0 Bevezetés - matematikai alapok Logikai programozás Leíró logikák (Description Logics DL) 1 Hatékony nyílt világ következtetés leíró logikákon A PTTP specializálása DL klózokra DL klózok fordítása Prolog programmá A fordítás optimalizálása A DLog rendszer megvalósítása 2 Összefoglalás Lukácsy Gergely (BME) Hatékony keresés a szemantikus világhálón 2008. április 26. 3 / 17

Az előadás vázlata 0 Bevezetés - matematikai alapok Logikai programozás Leíró logikák (Description Logics DL) 1 Hatékony nyílt világ következtetés leíró logikákon A PTTP specializálása DL klózokra DL klózok fordítása Prolog programmá A fordítás optimalizálása A DLog rendszer megvalósítása 2 Összefoglalás Lukácsy Gergely (BME) Hatékony keresés a szemantikus világhálón 2008. április 26. 3 / 17

Bevezetés - matematikai alapok Logikai programozás Logikai programozás Prolog és kiterjesztései Logikai Programozás alapja: matematikai logika mint programozási nyelv A Prolog az első és máig a legelterjedtebb logikai programozási nyelv A logikai program végrehajtása elsőrendű következtetési folyamat Prolog esetén ez a Horn-klózokon teljes SLD rezolúció Prolog végrehajtás kiterjeszthető teljes elsőrendű tételbizonyítóvá (PTTP) kontrapozitív, előfordulás-ellenőrzés, ős-rezolúció, iteratívan mélyülő keresés Prolog példaprogram % valaki boldog, ha van okos és szép unokája is ugyanattól a gyermekétől boldog(a) :- gyermeke(a, B), gyermeke(b, C), okos(c), gyermeke(b, D), szép(d). okos(bence). szép(bence). gyermeke(ági, kati). gyermeke(kati, bence). Lukácsy Gergely (BME) Hatékony keresés a szemantikus világhálón 2008. április 26. 4 / 17

Bevezetés - matematikai alapok Leíró logikák (Description Logics DL) Leíró logikai formalizmus a SHIQ leíró logikai nyelv atomi fogalom: egyedek egy halmaza (unáris reláció) Könyv, Regény, Ember,, atomi szerep: egyedek között fennálló bináris reláció címe, szerzője, gyermeke fogalomkonstruktorok: összetett fogalmak képzése atomiakból Könyv Regény, Okos Szép, {, }gyermeke.okos,( 2 neje.szép) szerepkonstruktor: inverzképzés szülője gyermeke axiómák: fogalmi- és szerephierarchia, tranzitivitás Leíró logikai tudásbázis = (T-doboz, A-doboz) T-doboz axiómák: Regény Könyv, gyermeke leszármazottja A-doboz axiómák: Ember(Kati), gyermeke(kati, Bence) Lukácsy Gergely (BME) Hatékony keresés a szemantikus világhálón 2008. április 26. 5 / 17

Bevezetés - matematikai alapok Leíró logikák (Description Logics DL) Következtetés leíró logikákon T-doboz következtetési feladatok fogalmak kielégíthetősége, alárendeltsége, ekvivalenciája, diszjunktsága a kielégíthetőséget hagyományosan tabló algoritmusokkal vizsgálják A-doboz következtetési feladatok konzisztencia: van-e modellje egy A adatdoboznak egy T T-doboz felett? példányvizsgálat: igaz-e A T = α, ahol α egy adatállítás? Következmény-e az, hogy gyermeke.okos(kati)? példánykikeresés: meghatározandó a {i A T = C(i)} halmaz Mik a példányai a Ember Nőnemű fogalomnak? A C példánykikeresési feladat visszavezethető az összes i 1,...,i n példány egyenkénti példányvizsgálatára 1 hozzáadjuk az A-dobozhoz a C(i k ) adatállítást 2 megvizsgáljuk az A-doboz konzisztenciáját 3 inkonzisztencia esetén i k biztosan a C fogalom példánya Lukácsy Gergely (BME) Hatékony keresés a szemantikus világhálón 2008. április 26. 6 / 17

Hatékony nyílt világ következtetés leíró logikákon Kérdés Lehetséges-e olyan algoritmust készíteni, amely hatékonyan oldja meg a Leíró Logika SHIQ nyelvi példánykikeresési feladatát nagyméretű (azaz esetleg adatbázisban tárolt) A-doboz esetén? Válasz A DLog rendszer egy Prologban implementált rezolúciós alapú A-doboz következtető rendszer, amely a SHIQ Leíró Logikai nyelvre alkalmazható a DLog a SHIQ tudásbázisból optimalizált Prolog programot készít a DLog lekérdezések fókuszáltak és a következtetés tisztán kétfázísú a DLog lényegesen gyorsabb a létező következtetőknél a DLog szabadon letölthető és használható Lukácsy Gergely (BME) Hatékony keresés a szemantikus világhálón 2008. április 26. 7 / 17

Hatékony nyílt világ következtetés leíró logikákon Egy példa: a fordítás már T-doboz nélkül sem könnyű Igaz-e, hogy gyermeke.(apagyilkos gyermeke. Apagyilkos)(Iokaszté) gyermeke Iokaszté gyermeke Apagyilkos Oidipusz gyermeke Polüneikész Ami nem működik... Ans(i) :- gyermeke(i, B), apagyilkos(b) Apagyilkos gyermeke(b, C), not_apagyilkos(c). Therszandrosz \+ gyermeke Lukácsy Gergely (BME) Hatékony keresés a szemantikus világhálón 2008. április 26. 8 / 17

Hatékony nyílt világ következtetés leíró logikákon Egy példa: a fordítás már T-doboz nélkül sem könnyű Igaz-e, hogy gyermeke.(apagyilkos gyermeke. Apagyilkos)(Iokaszté) gyermeke Iokaszté gyermeke Apagyilkos Oidipusz gyermeke Polüneikész Ami nem működik... Ans(i) :- gyermeke(i, B), apagyilkos(b) Apagyilkos gyermeke(b, C), not_apagyilkos(c). Therszandrosz \+ gyermeke Lukácsy Gergely (BME) Hatékony keresés a szemantikus világhálón 2008. április 26. 8 / 17

Hatékony nyílt világ következtetés leíró logikákon Egy másik példa esetszétválasztásra: alkoholisták Legyenek adottak a következő axiómák barátja.alkoholista Alkoholista (ha valakinek van alkoholista barátja, akkor ő nem alkoholista) szülője. Alkoholista Alkoholista (ha valakinek van nem alkoholista szülője akkor ő sem alkoholista) szülője(i, sz1). szülője(i, sz2). barátja(sz1, sz2). Igaz-e az alábbi? Alkoholista(i) Lukácsy Gergely (BME) Hatékony keresés a szemantikus világhálón 2008. április 26. 9 / 17

Hatékony nyílt világ következtetés leíró logikákon A PTTP specializálása DL klózokra A DLog és a PTTP technológia A DLog megközelítés dióhéjban 1/A a T-doboz elsőrendű klózok [Motik06, Zombori07] DL-klózok 1/B specializált PTTP technológia alkalmazása a DL-klózokra 2 kérdések futtatása hagyományos Prolog végrehajtással A PTTP technológia specializálása DL-klózokra PTTP DLog előfordulás ellenőrzés szükséges nem szükséges (n.sz.) keresés iteratívan beépített Prolog + mélyülő cikluseliminálás kontrapozitívok negált bináris összes képzése fejűek esetén n.sz. ős-rezolúció minden predikátumra bináris predikátumokra n.sz. nemdeterminisztikus determinisztikus Lukácsy Gergely (BME) Hatékony keresés a szemantikus világhálón 2008. április 26. 10 / 17

Hatékony nyílt világ következtetés leíró logikákon DL klózok fordítása Prolog programmá DL klózok fordítása Prolog programmá DL-klózok fordítási sémája Bemenet: DL klózok egy tetszőleges halmaza Kimenet: hagyományos módon végrehajtható Prolog program Tétel: az eredeti klózhalmaz és a kapott program példánykikeresési szempontból ekvivalens Példa: gyermeke.( gyermeke.szép gyermeke.okos) boldog boldog(a, L) boldog(a, L) boldog(a, L) :- member(c, L), C == boldog(a),!, fail. :- memberchk(not_boldog(a), L). :- gyermeke(a, B), gyermeke(b, C), okos(c), gyermeke(b, D), szép(d).... not_okos(a, L) :- F = [not_okos(a) L], gyermeke(c, A), gyermeke(d, C), gyermeke(c, E), szép(e), not_boldog(d, F). Lukácsy Gergely (BME) Hatékony keresés a szemantikus világhálón 2008. április 26. 11 / 17

Hatékony nyílt világ következtetés leíró logikákon A fordítás optimalizálása A fordítás optimalizálása A DLog 8(+2) optimalizálási transzformációt alkalmaz 1 szűrés: felesleges klózok eltávolítása (hamisan-, kétszeresen árva) 2 osztályozás: atomi-, kérdés-, árva-, általános klózok egyedi fordítás 3 rendezés: klóztörzsek sorrendezése heurisztika alapján 4 indexelés: kétargumentumú Prolog indexelés 5 tömörítés: tömör cél igazságértékének hatékony meghatározása 6 dekompozíció: klóztörzs független komponensekre bontása 7 projekció: szuperhalmazok keresése egyenkénti példányvizsgálat 8 szerepfordítás: cikluseliminálás kiküszöbölése szerepeknél 9 (parciális evaluálás): bejárati eljárások speciális fordítása 10 (speciális táblázás): már kiszámított ágak újrafelhasználása Tétel: a fent definiált transzformációk helyesek és teljesek Lukácsy Gergely (BME) Hatékony keresés a szemantikus világhálón 2008. április 26. 12 / 17

Hatékony nyílt világ következtetés leíró logikákon A DLog rendszer megvalósítása Megvalósítás Megvalósítottuk az előzőekben megfogalmazott módszereket a DLog rendszerben és elvégeztük a DLog részletes hatékonyságvizsgálatát. Pellet Racer KAON2 DLog Kérdés gyermeke.(apagyilkos gyermeke. Apagyilkos)(X) Tesztfájl c10 c20 c100 c1000 c10000 n1 n2 n3 betöltés 0.07 0.08 0.15 0.33 1.47 0.24 0.38 1.99 futási idő 0.00 0.00 0.00 0.01 0.11 0.00 0.00 0.02 szumma 0.07 0.08 0.15 0.34 1.58 0.24 0.38 2.01 betöltés 0.45 - - - - 0.60 0.97 2.36 futási idő 0.72 - - - - 4.72 63.60 425.17 szumma 1.17 - - - - 5.32 64.57 427.53 betöltés 0.01 0.01 0.03 0.51 4.68 0.10 0.68 6.04 futási idő 0.07 0.09 0.15 1.68 79.91 0.47 1.76 23.25 szumma 0.08 0.10 0.18 2.19 84.59 0.57 2.44 29.29 betöltés 1.27 1.35 1.44 2.19-1.53 2.36 5.92 futási idő 0.19 0.32 1.31 456.40-0.80 2.48 23.95 szumma 1.46 1.68 2.76 458.58-2.33 4.84 29.87 Lukácsy Gergely (BME) Hatékony keresés a szemantikus világhálón 2008. április 26. 13 / 17

Hatékony nyílt világ következtetés leíró logikákon A DLog rendszer megvalósítása Megvalósítás Megvalósítottuk az előzőekben megfogalmazott módszereket a DLog rendszerben és elvégeztük a DLog részletes hatékonyságvizsgálatát. Pellet Racer KAON2 DLog Kérdés LQ 1 LQ 2 Tesztfile f1 f2 f3 f4 f1 f2 f3 f4 betöltés 6.96 11.83 15.79 21.34 6.96 11.83 15.79 21.34 futási idő 0.26 0.63 0.92 1.32 0.00 0.00 0.00 0.00 szumma 7.22 12.46 16.71 22.66 6.96 11.83 15.79 21.34 betöltés 6.56 13.56 20.66 28.73 6.46 13.56 20.66 28.73 futási idő 0.70 0.99 1.33 1.69 0.66 0.93 1.27 1.62 szumma 7.26 14.55 21.99 30.42 7.12 14.49 21.93 30.35 betöltés 24.84 91.57 X X 24.84 91.57 X X setup 29.41 112.29 X X 29.41 112.29 X X futási idő 2.69 5.89 X X 4.07 7.49 X X szumma 56.94 209.75 X X 58.32 211.35 X X beöltés 16.76 - - - 16.76 - - - setup 4.84 - - - 4.84 - - - futási idő 27.09 - - - 27.19 - - - szumma 48.69 - - - 48.79 - - - Lukácsy Gergely (BME) Hatékony keresés a szemantikus világhálón 2008. április 26. 14 / 17

Összefoglalás Összefoglalás Fontos feladat, hogy meglévő információforrások felett legyünk képesek következtetéseket végezni A hagyományos megoldások nagyszámú példány esetén nem skálázódnak megfelelően a weben nem igazán használhatók A DLog a leíró logikai T-dobozból Prolog programot készít; az adatokat a Prolog futás során éri el fókuszált módon A DLog rendszer hatékonyan képes következtetni nagyméretű adatdobozokon A DLog rendszer általánosan használható szemantikus alkalmazások következtető-motorjaként letölthető a http://dlog-reasoner.sourceforge.net webcímen használható a Protege ontológiaszerkesztővel folyamatosan fejlődik (újabb optimalizálások, Java API,... ) Lukácsy Gergely (BME) Hatékony keresés a szemantikus világhálón 2008. április 26. 15 / 17

Összefoglalás Kérdések? Lukácsy Gergely (BME) Hatékony keresés a szemantikus világhálón 2008. április 26. 16 / 17

Összefoglalás Kapcsolódó publikációk A DLog rendszerhez kapcsolódó publikációk Gergely Lukácsy, Péter Szeredi. Efficient description logic reasoning in Prolog: the DLog system. Bírálat alatt a Theory and Practice of Logic Programming folyóiratnál. Gergely Lukácsy, Zsolt Nagy, Péter Szeredi. Using logic programs for description logic reasoning. In Proceedings of Semantics 2006 - From Visions to Applications, pp. 113 125, Vienna, Austria, November 2006. Zsolt Nagy, Gergely Lukácsy, Péter Szeredi. Description logic reasoning using the PTTP approach. In Proceedings of the 2006 International Workshop on Description Logics (DL2006), volume 189 of CEUR, pp. 183 191, Windermere, U.K., May 2006. Zsolt Nagy, Gergely Lukácsy, Péter Szeredi. Translating description logic queries to Prolog. In Proceedings of the Practical Aspects of Declarative Languages, PADL 2006, volume 3819 of Springer LNCS, pp. 168 182, Charleston, USA, January 2006. Lukácsy Gergely (BME) Hatékony keresés a szemantikus világhálón 2008. április 26. 17 / 17