= activefacts * http://dataconstellation.com/ActiveFacts/ == DESCRIPTION: ActiveFacts is a semantic modeling toolkit, comprising an implementation of the Constellation Query Language, the Constellation API, and code generators that receive CQL or ORM (Object Role Modeling files, from NORMA) to emit CQL, Ruby and SQL. Semantic modeling is a refinement of fact-based modeling techniques that draw on natural language verbalisation and formal logic. Fact based modeling is essentially the same as relational modeling in the sixth normal form. The tools provided here automatically condense that to third normal form for efficient storage. They also generate object models as a Ruby module which has an effective mapping to both the original semantic model and to the generated SQL. The result is a formal language that reads like plain English, and allows creation of relational and object models that are guaranteed equivalent, and much more stable in the face of schema evolution than SQL is. == FEATURES/PROBLEMS: * Queries are parsed, but not yet generated to SQL. DDL is complete. * SQL generation handles some one-to-one relationships wrongly, including subtypes when independent of the supertype's table. * The Constellation API lacks SQL persistence (but is already useful; the CQL compiler uses the generated Ruby code extensively) * Re-invoking a fact type to add new readings doesn't work * Some types of external constraints (when adjectives mis-match) don't yet pass the CQL parser's semantic analysis. * Validation of semantic models (and many other areas) is incomplete * There's no interactive CQL interpreter yet; the cql command merely shows the parse tree. == SYNOPSIS: afgen --sql/server myfile.cql afgen --ruby myfile.cql afgen --cql myfile.orm == REQUIREMENTS: * Treetop parser generator * Optional: NORMA, see (needs Visual Studio pro edition), if you want to use ORM == INSTALL: * sudo gem install activefacts == LICENSE: Copyright (c) 2008 Clifford Heath. This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution.