Prova

Prova is a rule-based [|scripting] system that is used for [|middleware]. The language combines [|imperative] and [|declarative programming] by using a prolog syntax that allows calls to Java functions. In this way a strong Java code base is combined with Prolog features such as backtracking. Prova is derived from [|Mandarax], a Java-based [|inference] system developed by [|Jens Dietrich]. Prova extends Mandarax by providing a proper language [|syntax], native syntax integration with Java, [|agent messaging] and [|reaction rules]. The development of this language was supported by the grant provided within the EU projects GeneStream and BioGRID. In the project, the language is used as a rule-based backbone for distributed [|web applications] in biomedical [|data integration], in particular, the [|GoPubMed] system. The design goals of Prova: Prova aims to provide support for data integration tasks when the following is important: Prova has been used as the key service integration engine in the [|Xcalia] product where it is used for computing efficient global execution plans across multiple data sources such as Web services, TP monitors transactions like CICS or IMS, messages of MOM like MQ-Series, packaged applications with a JCA connector, legacy data sources on mainframes with a JCA connector, remote EJB Java objects considered as data providers or even local Java objects. Prova allows to deliver an innovative software platform for [|Service-oriented architecture] implementations.
 * Combine [|declarative] and [|object-oriented programming].
 * Expose logic and agent behavior as rules.
 * Access [|data sources] via [|wrappers] written in Java or [|command-line] shells like [|Perl].
 * Make the Java API of various packages accessible as rules.
 * Run within the Java runtime.
 * Enable [|rapid prototyping] of applications.
 * Offer a rule-based platform for [|distributed agent programming].
 * Location transparency (local, remote, mirrors);
 * Format transparency (database, [|RDF], [|XML] , [|HTML] , [|flat files] , computation resource);
 * Resilience to change (databases and web sites change often);
 * Use of open and [|open source] technologies;
 * Understandability and modifiability by a non-IT specialist;
 * Economical [|knowledge representation] ;
 * Extensibility with additional functionality;
 * Leveraging [|ontologies].

[]