# Prova

> Mediated Wiki article. Canonical URL: https://mediated.wiki/source/Prova
> Markdown URL: https://mediated.wiki/source/Prova.md
> Source: https://en.wikipedia.org/wiki/Prova
> Source revision: 1291144121
> License: Creative Commons Attribution-ShareAlike 4.0 International (https://creativecommons.org/licenses/by-sa/4.0/)

{{Short description|Programming language}}
{{other uses}}
'''Prova''' is an [open source](/source/open_source) [programming language](/source/programming_language) that combines [Prolog](/source/Prolog) with [Java](/source/Java_(programming_language)).

== Description ==
Prova is a rule-based [scripting](/source/Scripting_language) system that is used for [middleware](/source/middleware). The language combines [imperative](/source/imperative_programming) and [declarative programming](/source/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](/source/inference) system developed by [Jens Dietrich](/source/Jens_Dietrich). Prova extends Mandarax by providing a proper language [syntax](/source/syntax), native syntax integration with Java, [agent messaging](/source/agent_messaging) and [reaction rules](/source/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](/source/web_applications) in biomedical [data integration](/source/data_integration), in particular, the [GoPubMed](/source/GoPubMed) system.

The design goals of Prova:

* Combine [declarative](/source/declarative_programming) and [object-oriented programming](/source/object-oriented_programming).
* Expose logic and agent behavior as rules.
* Access [data sources](/source/data_sources) via [wrappers](/source/Wrapper_pattern) written in Java or [command-line shell](/source/command-line_shell)s like [Perl](/source/Perl).
* Make the Java API of various packages accessible as rules.
* Run within the Java runtime.
* Enable [rapid prototyping](/source/rapid_prototyping) of applications.
* Offer a rule-based platform for [distributed agent programming](/source/distributed_agent_programming).

Prova aims to provide support for data integration tasks when the following is important:
* Location transparency (local, remote, mirrors);
* Format transparency (database, [RDF](/source/Resource_Description_Framework), [XML](/source/XML), [HTML](/source/HTML), [flat file](/source/flat_file)s, computation resource);
* Resilience to change (databases and web sites change often);
* Use of open and [open source](/source/open_source) technologies;
* Understandability and modifiability by a non-IT specialist;
* Economical [knowledge representation](/source/knowledge_representation);
* Extensibility with additional functionality;
* Leveraging [ontologies](/source/Ontology_(computer_science)).

Prova has been used as the key service integration engine in the [Xcalia](/source/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](/source/CICS) or [IMS](/source/IBM_Information_Management_System), messages of MOM like [MQ-Series](/source/MQ-Series), packaged applications with a [JCA connector](/source/Java_EE_Connector_Architecture), 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](/source/Service-oriented_architecture) implementations.

== References ==
# A. Kozlenkov and M. Schroeder. [https://archive.today/20130202222811/http://www.springerlink.com/content/a64838380px2411k/?p=79f0a476a3f94a06b007d369f43a32ba&pi=1 PROVA: Rule-based Java-Scripting for a Bioinformatics Semantic Web]. In E. Rahm, editor, International Workshop on Data Integration in the Life Sciences, Leipzig, Germany, in Lecture Notes in Computer Science, Springer-Verlag, vol. 2994, pp.&nbsp;17–30, 2004.
# N. Combs and J.-L. Ardoint. Rules versus Scripts in Games Artificial Intelligence, AAAI 2004 Workshop on Challenges in Game AI, 2004.
# J. Dietrich, A. Kozlenkov, M. Schroeder, and G. Wagner. Rule-based Agents for the Semantic Web, Electronic Commerce Research and Applications, vol. 2, no. 4, pp.&nbsp;323–338, 2004.
# A. Paschke, M. Bichler, and J. Dietrich. ContractLog: An Approach to Rule Based Monitoring and Execution of Service Level Agreements, Int. Conf. on Rules and Rule Markup Languages for the Semantic Web (RuleML 2005), Galway, Ireland, 2005.
# A. Kozlenkov, R. Penaloza, V. Nigam, L. Royer, G. Dawelbait, and M. Schroeder. Prova: Rule-based Java Scripting for Distributed Web Applications: A Case Study in Bioinformatics, Reactivity on the Web Workshop, Munich 2006.

== External links ==
* [https://web.archive.org/web/20060804103736/http://prova.ws/ Prova homepage]

Category:Middleware
Category:Logic programming languages
Category:Declarative programming languages

---
Adapted from the Wikipedia article [Prova](https://en.wikipedia.org/wiki/Prova) by Wikipedia contributors ([contributor history](https://en.wikipedia.org/wiki/Prova?action=history)). Available under [Creative Commons Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/). Changes may have been made.
