This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
magik-demo:developer:magik-architecture [2013/07/23 11:51] alex [MAGIK Architecture] |
magik-demo:developer:magik-architecture [2017/07/06 15:24] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | {{:magik-demo:magik-logo.jpg?900|}} | + | {{:magik-demo:magik_logo.png?nolink&500|}} |
====== MAGIK Architecture ====== | ====== MAGIK Architecture ====== | ||
Line 12: | Line 11: | ||
* [[#Misc|Misc]] | * [[#Misc|Misc]] | ||
- | [[magik-demo:user:query approximation|Query Approximation]] | + | [[magik-demo:user:query approximation:generalization|Query Approximation]] |
===== Overall Architecture ===== | ===== Overall Architecture ===== | ||
{{ :magik-demo:developer:magik.png?nolink&700 }} | {{ :magik-demo:developer:magik.png?nolink&700 }} | ||
Line 21: | Line 20: | ||
=== Reasoning === | === Reasoning === | ||
- | * **MAGIK business logic**: the //Controller// component that process users input, run the reasoner (DLV engine), read/write to/from data layer (database), and return an output to users. Related package: ''[[#it.unibz.inf.magik.web|it.unibz.inf.magik.web]]''. | + | * **MAGIK business logic**: the //Controller// component that process users input, run the reasoner (DLV engine), run the Prolog code using TuProlog, read/write to/from data layer (database), and return an output to users. Related package: ''[[#it.unibz.inf.magik.web|it.unibz.inf.magik.web]]''. |
- | * **Core**: module which contains all related classes to encode TC-QC Java objects that is needed by DLV engine, and analyzes the returned answer set program by DLV engine. Related packages: ''[[#it.unibz.inf.magik.core|it.unibz.inf.magik.core]]'', ''[[#it.unibz.inf.magik.additional|it.unibz.inf.magik.additional]]''. | + | * **Core**: module which contains all related classes to encode TC-QC Java objects that is needed by DLV engine, and analyzes the returned answer set program by DLV engine. Also contains all related classes to encode schema, query and TC-statements for generating input file for the Prolog code that return the possible specializations of the query. Related packages: ''[[#it.unibz.inf.magik.core|it.unibz.inf.magik.core]]'', ''[[#it.unibz.inf.magik.additional|it.unibz.inf.magik.additional]]''. |
=== Data === | === Data === | ||
Line 75: | Line 74: | ||
===== Reasoning Layer ===== | ===== Reasoning Layer ===== | ||
== it.unibz.inf.magik.web == | == it.unibz.inf.magik.web == | ||
- | * ''[[magik-demo:developer:class:sessioncontrol|SessionControl]]'' → Class for controlling the active session of the application, including process users input, run the reasoner (DLV engine), read/write to/from data layer (database), and return an output to users. | + | * ''[[magik-demo:developer:class:web:sessioncontrol|SessionControl]]'' → Class for controlling the active session of the application, including process users input, run the reasoner (DLV engine), read/write to/from data layer (database), and return an output to users. |
- | * Read/write schemas from/to database : ''[[magik-demo:developer:class:sessioncontrol#readDBSchemas|readDBSchemas]]'', ''[[magik-demo:developer:class:sessioncontrol#addDbConnection|addDbConnection]]'', ''[[magik-demo:developer:class:sessioncontrol#addDbSchema|addDbSchema]]'' | + | * Read/write schemas from/to database : ''[[magik-demo:developer:class:web:sessioncontrol#readDBSchemas|readDBSchemas]]'', ''[[magik-demo:developer:class:web:sessioncontrol#addDbConnection|addDbConnection]]'', ''[[magik-demo:developer:class:web:sessioncontrol#addDbSchema|addDbSchema]]'' |
- | * Write objects to database (via Hibernate) : ''[[magik-demo:developer:class:sessioncontrol#hibernateSaveObject|hibernateSaveObject]]'' | + | * Write objects to database (via Hibernate) : ''[[magik-demo:developer:class:web:sessioncontrol#hibernateSaveObject|hibernateSaveObject]]'' |
- | * Add/edit/delete schema : ''[[magik-demo:developer:class:sessioncontrol#addSchema|addSchema]]'', ''[[magik-demo:developer:class:sessioncontrol#updateSchema|updateSchema]]'', ''[[magik-demo:developer:class:sessioncontrol#deleteSchema|deleteSchema]]'' | + | * Add/edit/delete schema : ''[[magik-demo:developer:class:web:sessioncontrol#addSchema|addSchema]]'', ''[[magik-demo:developer:class:web:sessioncontrol#updateSchema|updateSchema]]'', ''[[magik-demo:developer:class:web:sessioncontrol#deleteSchema|deleteSchema]]'' |
- | * Add/edit/delete relation of the schema : ''[[magik-demo:developer:class:sessioncontrol#addRelation|addRelation]]'', ''[[magik-demo:developer:class:sessioncontrol#updateRelation|updateRelation]]'', ''[[magik-demo:developer:class:sessioncontrol#deleteRelation|deleteRelation]]'' | + | * Add/edit/delete relation of the schema : ''[[magik-demo:developer:class:web:sessioncontrol#addRelation|addRelation]]'', ''[[magik-demo:developer:class:web:sessioncontrol#updateRelation|updateRelation]]'', ''[[magik-demo:developer:class:web:sessioncontrol#deleteRelation|deleteRelation]]'' |
- | * Add/edit/delete foreign key of the schema : ''[[magik-demo:developer:class:sessioncontrol#addForeignKey|addForeignKey]]'', ''[[magik-demo:developer:class:sessioncontrol#updateForeignKey|updateForeignKey]]'', ''[[magik-demo:developer:class:sessioncontrol#deleteForeignKey|deleteForeignKey]]'' | + | * Add/edit/delete foreign key of the schema : ''[[magik-demo:developer:class:web:sessioncontrol#addForeignKey|addForeignKey]]'', ''[[magik-demo:developer:class:web:sessioncontrol#updateForeignKey|updateForeignKey]]'', ''[[magik-demo:developer:class:web:sessioncontrol#deleteForeignKey|deleteForeignKey]]'' |
- | * Add/edit/delete finite domain constraint : ''[[magik-demo:developer:class:sessioncontrol#addFDC|addFDC]]'', ''[[magik-demo:developer:class:sessioncontrol#updateFDC|updateFDC]]'', ''[[magik-demo:developer:class:sessioncontrol#deleteFDC|deleteFDC]]'' | + | * Add/edit/delete finite domain constraint : ''[[magik-demo:developer:class:web:sessioncontrol#addFDC|addFDC]]'', ''[[magik-demo:developer:class:web:sessioncontrol#updateFDC|updateFDC]]'', ''[[magik-demo:developer:class:web:sessioncontrol#deleteFDC|deleteFDC]]'' |
- | * Add/edit/delete TC statement : ''[[magik-demo:developer:class:sessioncontrol#addTCStatement|addTCStatement]]'', ''[[magik-demo:developer:class:sessioncontrol#updateTCStatement|updateTCStatement]]'', ''[[magik-demo:developer:class:sessioncontrol#deleteTCStatement|deleteTCStatement]]'' | + | * Add/edit/delete TC statement : ''[[magik-demo:developer:class:web:sessioncontrol#addTCStatement|addTCStatement]]'', ''[[magik-demo:developer:class:web:sessioncontrol#updateTCStatement|updateTCStatement]]'', ''[[magik-demo:developer:class:web:sessioncontrol#deleteTCStatement|deleteTCStatement]]'' |
- | * Add/edit/delete query : ''[[magik-demo:developer:class:sessioncontrol#addSQLQuery|addSQLQuery]]'', ''[[magik-demo:developer:class:sessioncontrol#updateSQLQuery|updateSQLQuery]]'', ''[[magik-demo:developer:class:sessioncontrol#deleteQuery|deleteQuery]]'' | + | * Add/edit/delete query : ''[[magik-demo:developer:class:web:sessioncontrol#addSQLQuery|addSQLQuery]]'', ''[[magik-demo:developer:class:web:sessioncontrol#updateSQLQuery|updateSQLQuery]]'', ''[[magik-demo:developer:class:web:sessioncontrol#deleteQuery|deleteQuery]]'' |
- | * Displaying information of query reasoning result : ''[[magik-demo:developer:class:sessioncontrol#encodingProgram|encodingProgram]]'', ''[[magik-demo:developer:class:sessioncontrol#printQueryResultHTML|printQueryResultHTML]]'', ''[[magik-demo:developer:class:sessioncontrol#isQueryComplete|isQueryComplete]]'', ''[[magik-demo:developer:class:sessioncontrol#approximateQuery|approximateQuery]]'' | + | * Displaying information of query reasoning result : ''[[magik-demo:developer:class:web:sessioncontrol#encodingProgram|encodingProgram]]'', ''[[magik-demo:developer:class:web:sessioncontrol#printQueryResultHTML|printQueryResultHTML]]'', ''[[magik-demo:developer:class:web:sessioncontrol#isQueryComplete|isQueryComplete]]'', ''[[magik-demo:developer:class:web:sessioncontrol#approximateQuery|approximateQuery]]'' |
- | * Import pre-defined sample schema : ''[[magik-demo:developer:class:sessioncontrol#importSampleSchema|importSampleSchema]]'' | + | * Import pre-defined sample schema : ''[[magik-demo:developer:class:web:sessioncontrol#importSampleSchema|importSampleSchema]]'' |
- | * <fc blue>''SessionSchema''</fc> extends <fc blue>''Schema''</fc>, with the information of selected foreign keys, finite domain constraints, and table completeness statements in the active session, also the information of database connection details (only for remote schema). | + | * ''[[magik-demo:developer:class:web:sessionschema|SessionSchema]]'' extends ''[[magik-demo:developer:class:core:schema|Schema]]'', with the information of selected foreign keys, finite domain constraints, and table completeness statements in the active session, also the information of database connection details (only for remote schema). |
== it.unibz.inf.magik.core == | == it.unibz.inf.magik.core == | ||
Line 97: | Line 96: | ||
* ''[[magik-demo:developer:class:core:foreignkey|Foreign Key]]'' → Class for foreign key dependency between two relations from the common schema (sourceRelation[sourceAttr] → targetRelation[targetKey]). | * ''[[magik-demo:developer:class:core:foreignkey|Foreign Key]]'' → Class for foreign key dependency between two relations from the common schema (sourceRelation[sourceAttr] → targetRelation[targetKey]). | ||
* ''[[magik-demo:developer:class:core:finitedomainconstraints|Finite Domain Constraints]]'' → Class for finite domain constraint defined over a single attribute in a relation. | * ''[[magik-demo:developer:class:core:finitedomainconstraints|Finite Domain Constraints]]'' → Class for finite domain constraint defined over a single attribute in a relation. | ||
- | * ''[[magik-demo:developer:class:core:querygeneralization|QueryGeneralization]]'' → Class for generating (if exists) the least specific specialization query of the given query.[[magik-demo:developer:generalization-howitworks|How it works]] | + | * ''[[magik-demo:developer:class:core:querygeneralization|QueryGeneralization]]'' → Class for generating (if exists) the least specific specialization query of the given query. [[magik-demo:developer:generalization-howitworks|How it works]] |
- | * <fc blue>''QuerySpecialization''</fc> → Class for generating (if exists) the most specific generalization query(ies) of the given query. | + | * ''[[magik-demo:developer:class:core:queryspecialization|QuerySpecialization]]'' → Class for generating (if exists) the most specific generalization query(ies) of the given query. |
- | * <fc blue>''ProgramGenerator''</fc> → Class for translating the schema, constraints and query into DLV format | + | * ''[[magik-demo:developer:class:core:programgenerator|ProgramGenerator]]'' → Class for translating the schema, constraints and query into DLV format |
* <fc blue>''ConjunctiveQuery''</fc> → Class for traslating query into a conjunctive query. | * <fc blue>''ConjunctiveQuery''</fc> → Class for traslating query into a conjunctive query. | ||
* <fc blue>''TCSuggestions''</fc> → Class for suggested table completeness statements over a query so that the query will be complete. | * <fc blue>''TCSuggestions''</fc> → Class for suggested table completeness statements over a query so that the query will be complete. | ||
Line 112: | Line 111: | ||
===== Data Layer ===== | ===== Data Layer ===== | ||
== it.unibz.inf.magik.db == | == it.unibz.inf.magik.db == | ||
- | * ''[[magik-demo:developer:class:databaseconnector|DatabaseConnector]]'' → Class for database connection. Database connection is established with PostgreSQL JDBC Driver, a Java library that allows Java programs to connect to a PostgreSQL database. | + | * ''[[magik-demo:developer:class:db:databaseconnector|DatabaseConnector]]'' → Class for database connection. Database connection is established with PostgreSQL JDBC Driver, a Java library that allows Java programs to connect to a PostgreSQL database. |
- | * Read schemas relations, and foreign keys from database : ''[[magik-demo:developer:class:databaseconnector#getSchemaType|getSchemaType]]'', ''[[magik-demo:developer:class:databaseconnector#getSchemas|getSchemas]]'', ''[[magik-demo:developer:class:databaseconnector#getDbSchemas|getDbSchemas]]'', ''[[magik-demo:developer:class:databaseconnector#getSchema|getSchema]]'', ''[[magik-demo:developer:class:databaseconnector#readRelation|readRelation]]'', ''[[magik-demo:developer:class:databaseconnector#readForeignKeys|readForeignKeys]]'' | + | * Read schemas relations, and foreign keys from database : ''[[magik-demo:developer:class:db:databaseconnector#getSchemaType|getSchemaType]]'', ''[[magik-demo:developer:class:db:databaseconnector#getSchemas|getSchemas]]'', ''[[magik-demo:developer:class:db:databaseconnector#getDbSchemas|getDbSchemas]]'', ''[[magik-demo:developer:class:db:databaseconnector#getSchema|getSchema]]'', ''[[magik-demo:developer:class:db:databaseconnector#readRelation|readRelation]]'', ''[[magik-demo:developer:class:db:databaseconnector#readForeignKeys|readForeignKeys]]'' |
- | * Add/Edit/Delete schema (and relation) : ''[[magik-demo:developer:class:databaseconnector#addRelation|addRelation]]'', ''[[magik-demo:developer:class:databaseconnector#addSchema|addSchema]]'', ''[[magik-demo:developer:class:databaseconnector#deleteSchema|deleteSchema]]'', ''[[magik-demo:developer:class:databaseconnector#updateSchema|updateSchema]]'' | + | * Add/Edit/Delete schema (and relation) : ''[[magik-demo:developer:class:db:databaseconnector#addRelation|addRelation]]'', ''[[magik-demo:developer:class:db:databaseconnector#addSchema|addSchema]]'', ''[[magik-demo:developer:class:db:databaseconnector#deleteSchema|deleteSchema]]'', ''[[magik-demo:developer:class:db:databaseconnector#updateSchema|updateSchema]]'' |
- | * Get and add remote database connection information (only for remote database schema) : ''[[magik-demo:developer:class:databaseconnector#getDbUrl|getDbUrl]]'', ''[[magik-demo:developer:class:databaseconnector#getDbUser|getDbUser]]'', ''[[magik-demo:developer:class:databaseconnector#getDbPassword|getDbPassword]]'', ''[[magik-demo:developer:class:databaseconnector#addDbConnection|addDbConnection]]'' | + | * Get and add remote database connection information (only for remote database schema) : ''[[magik-demo:developer:class:db:databaseconnector#getDbUrl|getDbUrl]]'', ''[[magik-demo:developer:class:db:databaseconnector#getDbUser|getDbUser]]'', ''[[magik-demo:developer:class:db:databaseconnector#getDbPassword|getDbPassword]]'', ''[[magik-demo:developer:class:db:databaseconnector#addDbConnection|addDbConnection]]'' |
- | * Evaluate SQL query (only for remote database schema) : ''[[magik-demo:developer:class:databaseconnector#evaluateQuery|evaluateQuery]]'' | + | * Evaluate SQL query (only for remote database schema) : ''[[magik-demo:developer:class:db:databaseconnector#evaluateQuery|evaluateQuery]]'' |
- | * Validate and add user : ''[[magik-demo:developer:class:databaseconnector#validateUser|validateUser]]'', ''[[magik-demo:developer:class:databaseconnector#addUser|addUser]]'' | + | * Validate and add user : ''[[magik-demo:developer:class:db:databaseconnector#validateUser|validateUser]]'', ''[[magik-demo:developer:class:db:databaseconnector#addUser|addUser]]'' |
- | * Initialize required tables in installation process (for localhost application version) : ''[[magik-demo:developer:class:databaseconnector#installation|installation]]'' | + | * Initialize required tables in installation process (for localhost application version) : ''[[magik-demo:developer:class:db:databaseconnector#installation|installation]]'' |
== it.unibz.inf.magik.hibernate == | == it.unibz.inf.magik.hibernate == |