Overview
Typically the licenses listed for the project are that of the project itself, and not of dependencies.
Project Licenses
MIT License
# IMP-Logics IMP-logics is the implementation of: - the metamodel of a **Datalog schema** extended with negation and built-in literals. That is, it implements the Datalog concepts of term, atom, literal, derivation rule, etc. In addition, the schema also includes logic constraints written in the form of logic denials. - the metamodel of **dependencies** (e.g. tuple-generating dependencies), which is useful for implementing a * *Datalog+/- schema**. That is, it implements the concepts of TGDs and EGDs. E.g., with this library you can parse the following (datalog) logic schema: ``` % This rule says that d is a DeptWithEmploye if there is one employee e, working in d with a salary greather than 1000 DeptWithEmploye(d) :- Emp(e, d, s), s > 1000 % This other rule is a logic denial stating that there cannot be Dept d that is not a DeptWithEmploye :- Dept(d), not(DeptWithEmploye(d)) ``` This library is not a datalog interpreter. Hence, it does not implement the notion of fact, or the process to run a query. ## What is this library good for? IMP-logics can be used to parse, transform, or analyze a datalog (dependency) schema, that is, the normal clauses ( dependencies) that conforms a datalog (datalog+/-) program. For instance, you can parse a datalog schema, and check whether it is safe. ``` LogicSchema logicSchema = new LogicSchemaWithoutIDsParser().parse(schemaString); logicSchema.isSafe(); ``` Or you can traverse their derivation rules, logc constraints, or predicates: ``` LogicSchema logicSchema = new LogicSchemaWithoutIDsParser().parse(schemaString); for(DerivationRule rule: logicSchema.getAllDerivationRules){ ... } for(LogicConstraint constraint: logicSchema.getAllLogicConstraints){ ... } for(Predicate predicate: logicSchema.getAllPredicates){ ... } ``` You can see more examples in docs\USERS_GUIDE.md file. ## Build ### Building with ANTLR4 To compile the project for the first time, or whenever we change the grammar files, we need to execute the `mvn generate-sources` phase. Indeed, this phase creates the ANTLR4 autogenerated classes to visit the grammar. Hence, we recommend compiling the project with maven. ## Authorship This library is implemented by the IMP research group (https://imp.upc.edu/en), and the innovation lab group inLab-FIB (https://inlab.fib.upc.edu/en/), both from Universitat Politècnica de Catalunya - BarcelonaTech (https://www.upc.edu/en)