Welcome to the Peruser Knowledge Application Framework
Peruser (version 2) is an open-source framework for creating knowledge-enabled applications and service platforms.
Project News - Updated 2008-03-13
- Peruser 2.1.1 available for download on Sourceforge. (Click "Download" link at left)
- "Toolchest" online demonstration of SPARQL queries now available. (Click "Sample Applications" link at left).
Project Mission
Peruser is an open-source Java semantic application framework for developing solutions that hold value over time. Our focus is on driving system execution directly from high level declarative artifacts, without application coding or code generation (with some exceptions). We feel that these artifacts are more dense, valuable and durable than conventional UML+Java artifacts produced by object-oriented application software engineering.
Peruser is primarily used in server-side environments, although some artifacts produced in peruser workflows can be consumed and manipulated in client environments, including mobile computing environments.
Our technical approach is unification of several declarative paradigms in a flexible web service enabled wrapper:
- Knowledge Represenation using standards-based "Semantic Technology".
- Behavior is driven by RDF configuration artifacts, which are compatible with ontology management tools such as Protégé and TopBraid.
- LogicProgramming - (aka Expert Systems or Production Rules)
- Logical inference over RDF models - both backward and forward chaining.
- In Peruser 2.1.1, all inference uses the Jena Inference Engine.
- Other reasoners and rules-engines are in the pipeline (Pellet and Prova).
- Functional Programming -
- XSLT transformation pipelines, which are intimately integrated with Cocoon.
- Queries over flexibly combined logical models (e.g. using SPARQL, JFresnel, and the Peruser "Projector" module) to produce XML results.
- XQuery evaluation over XML document repositories like eXist-DB.
- Mathematical and statistical programming using tools like R and Weka. (Coming in Peruser 3.x)
- Constraint Programming
- GUI programming using tools like OpenLaszlo. Not included with Peruser itself, but fully compatible, with some nifty demos coming soon.
- Relational Data Management - Peruser includes support for SQL connectivity over several knowledge-enabled pathways.
Implementation Overview
The software is implemented with a small (about 85 classes currently) number of java classes combined with several open source jars, and numerous kinds of declarative artifacts. You can use this implementation to deploy applications in four principal forms:
- Cocoon Pipeline: A new pipeline in your existing or new cocoon deployment. This is the recommended deployment approach for Peruser 2.1.
- Webapp: A java webapp (under Tomcat, JBoss, Jetty, Websphere, etc.). Requires Java coding in Peruser 2.1.
- Server: A standalone java server (using embedded Jetty + Cocoon). Diabled in Peruser 2.1, but see Joseki.
- Library: Access peruser features at the java level, from your own Java/J2EE application. Go for it!
Applications
The peruser can be used to create innovative knowledge-driven applications, but it can also used to boost productivity in conventional software development. You can use peruser as an RDF/OWL driven reference data source, query integrator, or message mapper. Using the powerful cocoon infrastructure, peruser can connect directly to many XML web services and many forms of information storage (e.g. SQL / JDBC), and may be used to build a "smart" integration layer for these services.
Platform Requirements
- JDK 1.5. We test most things on the Sun JDK for Linux and Windows.
- A servlet container. We test mostly on Tomcat 5.5, although have run under Tomcat 4.x and Jetty 4.x before, too.
- Cocoon 2.1 - We have tested recently with Cocoon 2.1.9 through 2.1.11. Cocoon 2.2 is not yet supported.
- A means for editing RDF configuration models.
Open Source License (Apache License 2.0)
Details on licensing, warrantees, and legal issues (please read carefully before downloading Peruser components).
