Önálló labor, TDK és diplomamunka (egységesen: munka) témák Szeredi Péter, SZIT szeredi@cs.bme.hu 2005. június 1. Logikai programozáson alapuló segédeszközök információs rendszerek integrálásának segítéséhez A tanszéken 2005. januárjában indult a SINTAGMA (Szemantikus INtegrációs Technológia Alkalmazása Grid-alapú Modell-vezérelt Architektúrákban) c. NKFP projekt, partnerek: SZTAKI, KFKI Számítástechnikai Rt., MTI, OSZK, Areco, Hunoris. A SINTAGMA projekt folytatása annak a kutatási munkának, amely az IQSYS Rt.-nél folyt a SILK (System Integration via Logic and Knowledge) ill. LOBO (Logic-Based Ontology Management) kutatási projektek keretében. Ennek a projekt-sorozatnak a célja egy olyan eszközkészlet létrehozása, amely heterogén információ-források egységesítését segíti oly módon, hogy a forrásokat magukat nem duplikáljuk, nem másoljuk le. A projektsor alapgondolata az, hogy az információs rendszerekre vonatkozó ismereteket (metaadatokat) egy tudásbázisban tároljuk. Ezeket az ismereteket többféle formalizmussal adhatjuk meg, pl. leíró-logikában (Description Logics) vagy objektum-orientált módon (UML). A tudásbázisban tároljuk az objektum-modell jellemzőit: a fogalmak, osztályok szerkezetét, kapcsolataik leírását. Emellett fontos szerepet kapnak az objektumokat, kapcsolatokat jellemző megszorítások, korlátok, amelyek megfogalmazására részben az OCL (az UML részét képező Object Constraint Language) nyelvet, részben a leíró-logika nyelvét használjuk. A SINTAGMA rendszer ily módon lehetővé teszi, hogy egyes felhasználói csoportok fogalmi modelljeit megfogalmazzuk és ezeket összekapcsoljuk az információs rendszerek modelljeivel. Az eszközkészlet egyes komponensei a modellek és kapcsolatrendszerek felépítését és vizsgálatát segítik, a heterogén információ-források lekérdezését biztosítják, illetve a modell- és adat-szintű ellentmondások felderítését és kiküszöbölését támogatják. A témák viteléhez szükséges az objektum-orientált modellezés és a logikai programozás (Prolog) ismerete és alkalmazási készsége. Egyes feladatokhoz szükség van a Java nyelv ismeretére is. A SINTAGMA projekt alapozó kutatási munkái most folynak, várhatóan az alábbi területeken lehet bekapcsolódni a projektbe (a lista bővítése folyamatban): 1.1 Hibrid modellezési paradigmák A különböző tudásterületeken eltérő modellezési eszközöket és módszereket használnak a fellelhető ismeretek leírására. A sok helyen jól használható objektumorientált paradigma kevésbé alkalmas ontológia jellegű tudásmorzsák megadására, ahol az osztályokat úgy hozzuk létre, hogy megmondjuk: milyen jellemzővel rendelkező példányok az elemei (lásd a leíró logikai megközelítést). Ugyancsak másfajta modellezésre lehet szükség pl. webszolgáltatások leírása esetén (amelyek összetett típusok használatát is megkövetelhetik). A feladat annak megvizsgálása, hogy milyen módon hozható az UML-, a leíró logikák- és a webszolgáltatások világa egy közös fedél alá. A cél egy olyan egységes modellezési nyelv kialakítása, amely lehetővé teszi a fenti modellezési elemek együttes használatát. 1.2 Modellverifikáció A jelenleg működő ellenőrző eszköz a modellszintű ellentmondások felderítését támogatja a CLP (Constraint Logic Programming) eszköztárának felhasználásával. A különböző tartományokon dolgozó CLP következtetők egy ütemező közreműködésével fejtik ki hatásukat. A feladat annak az elemzése, hogy a létező, elsőrendű logikán alapuló tételbizonyítók mennyire és milyen módon alkalmasak a jelenlegihez hasonló verifikációs feladatok megoldására. A cél annak eldöntése, hogy a CLP-s vagy pedig az elsőrendű következtetőn alapuló irány az, amelyet a rendszer további fejlesztése során követnünk érdemes. 1.3 Gráfok hasonlóságvizsgálata Információforrások integrációjakor az első lépés annak eldöntése, hogy a különböző forrásokat reprezentáló modellek között milyen kapcsolatok, milyen megfeleltetések lehetségesek. Ehhez össze kell hasonlítani az egyes modelleket. Különbség lehet az alkalmazott technikában akkor, ha ezen modellek valamilyen szempontból közös őstől származnak, ilyenkor beszélhetünk modellek/ontológiák evolúciójáról. A feladat olyan (feltehetőleg gráf) algoritmusok kidolgozása, amelyek objektumorientált és leíró logikai modellelemek összehasonlítására alkalmazhatók. A cél egy olyan egységes modell-összehasonlító modul elkészítése, amely az 1.1-es feladatban leírt hibrid modellezési nyelven leírt modellek összehasonlítását képes hatékonyan elvégezni. 1.4 Modellek egyesítése A heterogén információforrások egységesítését úgy érjük el, hogy a forrásokat leíró modellek fölé új, egyesített modelleket építünk. Ezeket és az alacsonyabb szintű modelleket különféle leképzésekkel kapcsoljuk össze. Az egyesített modellek több információforrást fognak át és tesznek lekérdezhetővé. A feladat olyan módszerek kidolgozása, amelyek segítségével automatizálható az egyesített modellek létrehozásának folyamata, ha feltesszük, hogy a modellek összehasonlításából származó eredmények már rendelkezésünkre állnak. A cél az, hogy a felhasználó a lehető legkevesebb manuális beavatkozással legyen képes átfogó modellek létrehozására. 1.5 Generikus HTML csatoló Félig strukturált adatokban, mint például XML-ben, a keresés többé-kevésbé megoldott, hiszen rendelkezésünkre állnak a különféle XML lekérdezőnyelvek megvalósításukkal együtt. A HTML források speciálisak azonban abból a szempontól, hogy a rajtuk történő keresést általában vizuális információk vezérlik. Például a felhasználó azt az igényt tudja megfogalmazni könnyen, hogy őt a lapon látható második táblázatnak érdekli az ár oszlopa, függetlenül attól, hogy maga a HTML kód hogyan néz ki. A feladat egy olyan információkinyerő technológia létrehozása, amely képes HTML nyelvű dokumentumokban keresni úgy, hogy a keresés feltételét a megjelenítési rétegen fogalmazzuk meg. A cél az, hogy ha egy felhasználó el tudja magyarázni egy böngésző előtt ülve, hogy őt pontosan mi érdekli egy adott oldalon, akkor a kialakítandó technológia képes legyen kinyerni azt az oldalról. A keresőnek akkor is meg kell találnia a keresett elemet, ha maga az oldal időközben bizonyos mértékben meg is változott. 2. Deklaratív nyelvek oktatása Ezek a feladatok a Deklaratív Programozás (DP), ill. a Nagyhatékonyságú Logikai Programozás (NHLP) c. tárgyak oktatásához kapcsolódó kutatás-fejlesztési tevékenységek. 2.1 Gyakorló rendszer továbbfejlesztése Az elmúlt évek során a Deklaratív Programozás c. tárgyhoz kapcsolódóan kifejlesztettünk egy Elektronikus Tanársegéd (ETS) rendszert (http://dp.iit.bme.hu/ets), amely, többek között a Prolog és SML programozás hallgatói gyakorlását segíti. A munka célja ennek a gyakoroltató rendszernek a továbbfejlesztése: új feladat-típusok és feladatkészletek kidolgozása, a rendszer intelligens értékelő módszerekkel való bővítése, valamint egy segítő alrendszer kidolgozása, amely a hallgatót, az észlelt típushibák alapján a megfelelő anyagrészhez irányítja. A munka viteléhez szükséges a Prolog és/vagy az SML nyelvek ismerete, hasznos az oktatás (és különösen a gépi oktatás) iránti érdeklődés ill. gyakorlat. 2.2 Nagy házi feladatok összehasonlító vizsgálata A DP és NHLP tárgyak oktatásában minden félévben új nagy házi feladatokat tűzünk ki (lásd http://dp.iit.bme.hu, ill. http://www.inf.bme.hu/~szeredi). A munka ezek összegyűjtése, rendszerezése, megoldási módszereik összehasonlítása és elemzése, különös tekintettel a különböző deklaratív nyelvek (SML, Prolog, CLP) által nyújtott lehetőségekre. A munka során ki kell térni a tesztadatok előállítási módszereire, beleértve az automatikus generálást is. Az összegyűlt tapasztalatokra építve a munka során további, nagy házi feladatnak alkalmas problémákat kell azonosítani, a feladatkiírásokat és megoldásokat ki kell dolgozni. A munka viteléhez szükséges az SML és Prolog nyelvek, ill. a Prolog CLP kiterjesztéseinek ismerete. 3. Prolog megvalósítások Ezek a munkák a Prolog nyelv megvalósításához kapcsolódnak. 3.1 Prolog rendszerek összehasonlító vizsgálata 1995-ben készült el az Nemzetközi Szabványosítási Szervezet (ISO) Prolog nyelvre vonatkozó szabványának első része. Azóta számos Prolog rendszert "igazítottak" a szabványhoz. Sajnos több, kisebb-nagyobb kérdésben a magukat ISO-Prolog kompatíbilisnek nevező Prolog rendszerek is eltérnek egymástól. A SICStus Prolog rendszer regresszív tesztkészletéhez korábban elkészült egy program, amely a szabványban levő és további példák futtatásával ellenőrzi az ISO szabványnak való megfelelőséget. A feladat első része ennek a tesztprogramnak az átvitele további Prolog rendszerekre. Ezt követően azonosítani kell a szabvány problematikus döntéseit, és ezeket csoportosítva meg kell kísérelni a különböző Prolog rendszerek osztályozását. Ezután a tesztprogramot tovább kell fejleszteni, hogy segítségével könnyen azonosíthatók legyenek a Prolog megvalósítások. Fontos lehet még a teszt-rendszer kibővítése, pl. a könyvtári eljárások tesztelésére, vagy a különböző Prolog rendszerek (idő-, memória-) hatékonyságának az összehasonlító vizsgálatára. A munka viteléhez szükséges a Prolog nyelv ismerete. 3.2 Prolog rendszerek tárgazdálkodása A feladat a Prolog megvalósítások memória-gazdálkodási módszereinek a vizsgálatával kezdődik, különös tekintettel a hulladékgyűjtési (garbage collection) technikákra. Specifikusan meg kell ismerkedni egy nagyon egyszerű, oktatási célú Prolog megvalósítás, az aProlog rendszer memóriakezelésével. Meg kell tervezni egy az aProloghoz illeszkedő hulladékgyűjtési algoritmust, és implementálni kell C nyelven. A munka viteléhez szükséges a C és Prolog programozási nyelvek ismerete. 3.3 Prolog programok fordítási idejű transzformációja A cél egy olyan, a gyakorlatban alkalmazható Prolog preprocesszálási módszer kifejlesztése, amely nem igényel külön preprocesszor-nyelvet. Ez úgy érhető el, hogy a preprocesszálást úgy tekintjük, mint Prolog forrásprogramok transzformációját. Ez az általános irányzat az ún. parciális evaluáció (http://www.diku.dk/forskning/topps/activities/PartialEvaluation.html), ennek a közelítésmódnak a SICStus Prolog esetére való alkalmazása a Mixtus rendszer (http://www.sics.se/ps/mixtus.html). Ezen, viszonylag általános megközelítések mellett, a SICStus Prolog fejlesztési munkáinak megkönnyítésére készült egy egyszerű előfeldolgozó program, amely fordítási időben végez el egyes redukciós lépéseket (eljáráshívásokat). A munka célja ennek a preprocesszornak a továbbfejlesztése. A munka viteléhez szükséges a Prolog nyelv ismerete.