- Added support for Java 8 Date/Time API (Feature #36).
- Fixed issue with caching instances of classes overriding
equals
/hashCode
. - Upgraded to AspectJ 1.9.2, Jena 3.9.0, OWL API 5.1.7 and RDF4J 2.4.1.
- Support unbound variables in
VariableResult
inSparqlResultMapping
. - Fixed incorrect handling of language on attribute loading.
- More consistent handling of open/close persistence context.
- Removed several unused files, libraries.
- Improved collection cloning.
- Fixed incorrect field cardinality specification in OWL2Java.
- Upgraded to OWLAPI 5.1.6.
- Added
aop.xml
so that load time weaving can be used with JOPA.
- Fixed a critical NPX issue caused by inherited indirect collections not being removed when an entity was detached from the persistence context.
- Reduced memory footprint.
- Configurable generation of Javadoc from rdfs:comment annotations in OWL2Java (Enhancement #35).
- Entity classes generated by OWL2Java implement
Serializable
. - Introduced dedicated classes with constants from RDF, RDFS and OWL namespaces into the API.
- Deprecated
CommonVocabulary
, useRDF
,RDFS
,OWL
andXSD
classes instead.
- Fixed bug SPARQL query parser which prevent the use of property paths together with variables.
- Added support for setting the in-memory storage in Jena and RDF4J driver (Enhancement #32).
- Working on Github Wiki.
- Fixed bug where old object property assertion was not removed on merge (Bug #33).
- Allow to reload file-based storage in OntoDriver (Enhancement #33).
- Use the
ReloadableDataSource
, which can be unwrapped from anEntityManagerFactory
.
- Use the
- Fixes in the Jena driver. Support for consistency checks.
- Do not mark transaction for rollback on
NoResultException
andNoUniqueResultException
. This improves compatibility with Spring declarative transaction support (jopa-spring-transaction
). - Library updates (AspectJ 1.9.1, RDF4J 2.3.1).
- Support for anonymous ontologies in OWLAPI driver.
- Jena OntoDriver implementation (Enhancement #18).
- In-memory, File and TDB storage are supported.
- Fixed bug in cloning instances with circular dependencies (using collections).
- Updated the compiler and AspectJ plugins.
- Fixed dependency conflict in JOPA Maven plugin (Bug #29).
- Fixed incorrect implementation of
contains
in Sesame driver. - Minor memory consumption optimizations.
- Fixed volatile order of generated vocabulary elements (Issue #28).
- Fixed issue with OWL2Java silently ignoring missing imports (Bug #22).
- Upgraded to OWLAPI 5.1.3. Upgraded to OWL2Query 0.5.0.
- Unified OWLAPI version in all project submodules.
- Switched to Openllet in tests (it supports OWLAPI 5).
- Rewrote em.refresh to correspond to JPA behavior (Issue #17).
- Upgraded to the latest RDF4J (2.2.4).
- Generate class names compliant with Java naming conventions (OWL2Java).
- Added support for untyped query parameters to Query API (necessary for
LIMIT
andOFFSET
support). - Also added support for
Query.setFirstResult
.
- Finished implementation of support for result set mapping - EntityResult (Feature #7).
- Fixed issue with PostLoad lifecycle callbacks and listeners not being called for referenced entities (Bug #10).
- Improved performance of the getter/setter Aspect. This also caused smaller memory requirements for tracking persistence context of entities.
- Rewrote persistence provider discovery to work the same as in JPA.
- Better support of the
isLoaded
methods.
- Partial support for SPARQL result set mapping - VariableResult and ConstructorResult (Feature #7).
- Fixed issue with class discovery in JDK 9 (Bug #8, thanks to Yan Doroshenko).
- Log executed query to provide more auditing info.
- Support for credentials specification for accessing remote RDF4J repositories.
- Reworked instance persist to prevent saving pending references before the target instances are saved. This also fixes the problem of prematurely generated IDs.
- Reworked merge to have semantics more corresponding to JPA.
- Allow descriptor specification for TypedQuery results. This allows context to be specified for these results. It also replaces the original possibility of setting context for query, which did not work anyway.
- Added support for language tag specification of String attributes.
- Fixed issue with handling cascading cycles (Bug #4).
- Fixed issue with parsing queries without spaces after variables (Bug #6).
- Fixed issue with loading unmapped properties in Sesame driver.
- Added support for namespace specification.
- Added support for generating subclasses in OWL2Java.
- Improved handling of query result sets.
- Fixed issue with loading classes containing 'class' in name (Bug #5).
- Implemented support for
EntityListener
s. - Escape string parameters in SPARQL native queries.
- Fixed issue with mapped superclass referencing its descendants (Bug #3).
- Fixed issue with cloning content of singleton collections elements.
- Upgraded Sesame driver from Sesame API 2.8.9 to RDF4J 2.2.
- Mark transaction for rollback when exception is thrown in persistence context-related operations.
- Fixed issue with merge overwriting values of references in managed objects (Bug #2).
- Aligned merge implementation with the JPA specification semantics.
- Fixed issue in which second level cache was being bypassed by instances loaded from repository.
- Create default collection instance (currently
ArrayList
,HashSet
) when unable to clone the specified instance. - Minor performance improvements.
- Internal entity lifecycle callbacks support (Lifecycle callback methods declared directly in entity classes).
- Fixed major memory leak in persistence context management.
- Support for single inheritance.
- Added support for datatype property collections in entities.
- Added support for
Query.executeUpdate
, which executes SPARQL Update statements on the repository. (This feature is not supported by OWL2Query, so it only applies to Sesame-backed applications.)
- Fixed issue with merging changes into collections which do not support the
clear
operation (e.g. singleton collections).
- Upgraded to OWL API 4.2.4 - it fixes issues with missing import statements after ontology copy,
- Changed the way transactional snapshot are created in the OWL API driver.
- Refactored metamodel as a preparation for inheritance implementation. Use AspectJ 1.8.9.
- Added support for named native queries. Declaration is similar to JPA, just use
@NamedNativeQuery
or@NamedNativeQueries
on an entity or its mapped superclass and the query will be available in the persistence unit.
- Consistent handling of instances with the same identifier (i.e. the same individual). Only single instance with a given identifier is allowed in one persistence context. But, persisting the same individual as instance of different classes in different persistence contexts is possible.
- Major improvement of instance loading in the Sesame driver
- Fixed bug in
CollectionChangeDetector
, which caused identical collection to behave as different (issue with element ordering)
- More efficient handling of repository connections in the Sesame driver
- Added support for Mapped superclass (
@MappedSuperclass
annotation) - Do not allow non-entities in
EntityManager
operations (e.g.persist
,find
) - conforms to JPA
- Fixed issue with updating value in context,
- Verify integrity constraints on merge
- Generation of Vocabularies improvements - individuals, whole file processing.
- Added support for URI-based types, i.e. now it is possible to use
@Types Set<URI> types
in entities
- Fixed issue with running multiple persistence units in the same VM.
- Implemented support for
EntityManager.unwrap
. Using unwrap, it is possible to get a hold of for example the Sesame in-memory repository used by the Sesame driver (which is otherwise, due to the Sesame API architecture, inaccessible through theRepositoryProvider
.
- Added the possibility to generate only vocabulary using OWL2Java, without the Java object model itself.
- Added support for plain identifiers as values of Annotation and Object properties
- E.g. when an entity has an object property pointing to another individual, but that individual is not mapped by any class in the object model, its URI can now be used as the property value
- Use xsd:int for mapping Java Integer/int values to RDF. Most Java implementations (including JAXB) do it this way.
- Implemented support for typed @Properties fields (i.e. @Properties field can now be a
Map<URI, Set<Object>>
, where values have corresponding types instead of plain strings)