Java Class Model API for Predictive Model Markup Language (PMML).
- Full support for PMML 3.0, 3.1, 3.2, 4.0, 4.1, 4.2, 4.3 and 4.4 schemas:
- Schema version annotations.
- Extension elements, attributes, enum values.
- Enhanced API:
- Class hierarchy.
- Marker interfaces for common traits.
- Value constructors.
- Method chaining-friendly setter methods.
- Optional SAX Locator information.
- Visitor pattern:
- Validation agents.
- Optimization and transformation agents.
- Supported platforms:
- Java SE and EE.
- Android.
- Supported JAXB runtimes:
- Supported SerDe runtimes:
- Supported cross-compiler runtimes:
- Java 11 or newer.
JPMML-Model library JAR files (together with accompanying Java source and Javadocs JAR files) are released via the Maven Central Repository.
The current version is 1.7.1 (22 January, 2025).
<dependency>
<groupId>org.jpmml</groupId>
<artifactId>pmml-model</artifactId>
<version>1.7.1</version>
</dependency>
The class model consists of two types of classes. There is a small number of manually crafted classes that are used for structuring the class hierarchy. They are permanently stored in the Java sources directory /pmml-model/src/main/java
. Additionally, there is a much larger number of automatically generated classes that represent actual PMML elements. They can be found in the generated Java sources directory /pmml-model/target/generated-sources/xjc
after a successful build operation.
All class model classes descend from the org.dmg.pmml.PMMLObject
base class. Additional class hierarchy levels, if any, represent common state and/or behaviour. For example, all model classes descend from the org.dmg.pmml.Model
base class.
The class model should be self-explanatory. The application developer is advised to consult with the latest PMML specification about the specifics of individual PMML elements and attributes.
Loading a PMML schema version 3.X or 4.X document into a live org.dmg.pmml.PMML
object:
public PMML load(InputStream is) throws SAXException, JAXBException {
return org.jpmml.model.PMMLUtil.unmarshal(is);
}
Important: It is the responsibility of the application developer to ensure that the XML document does not contain malicious content (eg. XEE and XXE attacks).
Deleting SAX Locator information from the class model:
public void optimize(PMML pmml){
var visitor = new org.jpmml.model.visitors.LocatorNullifier();
visitor.applyTo(pmml);
}
Storing a live org.dmg.pmml.PMML
object into a PMML schema version 4.4 document:
public void store(PMML pmml, OutputStream os) throws JAXBException {
org.jpmml.model.PMMLUtil.marshal(pmml, os);
}
JPMML-Model is licensed under the BSD 3-Clause License.
JPMML-Model is developed and maintained by Openscoring Ltd, Estonia.
Interested in using Java PMML API software in your company? Please contact info@openscoring.io