User Tools

Site Tools


magik-demo:developer:magik-architecture

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
magik-demo:developer:magik-architecture [2013/07/22 12:07]
alex [Reasoning Layer]
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:​generalization|Query Approximation]]
 ===== Overall Architecture ===== ===== Overall Architecture =====
 {{ :​magik-demo:​developer:​magik.png?​nolink&​700 }} {{ :​magik-demo:​developer:​magik.png?​nolink&​700 }}
Line 20: 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 74: 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 96: 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 111: 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 ==
magik-demo/developer/magik-architecture.1374487661.txt.gz · Last modified: 2017/07/06 15:24 (external edit)