- added WMEToJSON-Converters to support new json-explanation feature in rete
- create temporary (i.e., non-persistent) entities with Entity::createTemporary
- added
EC<Component>to UtilBuildin
- changed plugin structure to separate plugin instances for multiple sempr cores
- added
componentQueryto RDFPlugin: An extended SPARQL query that also fetches c++ objects associated with ids - added builtins to deal with dates
- added createEntity builtin
- added idIsURI flag to entity, to allow skipping the automatic "sempr:" prefix
- added geometry builtins:
- geo:buffer
- geo:difference
- geo:fromWKT
- geo:toWKT
- geo:WGSFromUTM
- added geo:intersects builtin
- added createEntity builtin
- load plugins from SEMPR_PLUGINS_PATH env variable
- changed ECWME to include tags. This allows inferring a tag in rules
- Added several geometry builtins:
- geo:area
- geo:intersection
- geo:union
- geo:unionAll (union on GROUP BY results)
- Added (template) method to access loaded plugins
- Fix: LoadTriplesFromFile builtin support for constants
- (Mainly releasing this to trigger a build with rete 0.7.0)
- GeoDistanceNode now returns float values, for compatibility with rete comparison builtins (le, ge, lt, gt, eq, neq). At some point I should probably change it all to doubles...
- Fixed: URI representation of entities is now properly returned in an interpretation of rete::TriplePart (previously: std::string), whereas the std::string interpretation now returns the pure id.
- For compatibility with newer geos versions, the geometry component now contains a unique_ptr to geos::geom::Geometry.
- Added: Plugins that register node builders and default rules
- Fixed/Updated: Using rete v0.6.0 with a new accessor system and fixed string/triple handling.
- Requires C++14 now.
- Fix: Removed leftover -std=c++17 flag from and added missing flag to link boost_system to the pkg config file
- Updated/fixed: sempr.hpp had some old includes and missed some new ones
- Updated README
- Changed install path of the library, in order to not having to mess with LD_LIBRARY_PATH. (It's <install-dir>/lib/libsempr_core.so now, instead of <install-dir>/lib/sempr/libsempr_core.so)
- Added FindCereal.cmake
- Fix/Adjustment: Let the core explicitely handle rules. This is a change done together with rete v0.3.0 since which the RuleParser no longer adds the production nodes to the rete::Network, but instead returns Rule-objects which when deconstructed also remove the respective nodes from the network. This fix keeps those alive.
- Added ConstructRules-Node. This allows us to handle rules as data, by only hard-coding a single rule (or a very limited set of rules) that has a ConstructRules-effect and thus creates/removes rules as a result of the inference process.
- Added a simple TextComponent (in order to store rules as data).
- Added toString method for ECNode. (Requires rete v0.4.0)
- Fix: Wrong relative include path in a header file
- Fix: Added a specialization of rete::util::to_string for GeosGeometryInterface
- EntityAccessor now inherits StringAccessor, in which case it returns the
entity id in a URI format, i.e.:
Entity_1-><sempr:Entity_1>. This allows an easy usage in rules without an extra builtin to extract the id. - Added geo:distance(?dist ?geo1 ?geo2)
- Added geo:UTMFromWGS(?geoOut ?geoIn ?utmZone) which transforms a geometry that is specified in WGS84 lon/lat coordinates into a UTM coordinate system, in which e.g. distance calculations with geo:distance make sense.
- Added method to TriplePropertyMapEntry that returns the current type
- Added loadFromJSON and saveToJSON methods to component. These are implemented
in a
SEMPR_COMPONENTmacro that needs to be added to all components
- Fix: Multiple wrong include paths
- Fix: Some ComponentName defs were missing
- Fix: ECAccessor now registers its type, making it usable in rules/builders
- Removed dependency to ODB
- Added serialization with cereal
- Added SeparateFileStorage module
- Added components and nodes to use with RDF triples: TripleDocument, TriplePropertyMap
- Added FileWatcher and a corresponding file:exists builtin to trigger rules when a local file changes
- Changed gitlab-ci to use a qt5 build of soprano
There has been a complete rework of the internal structure. Entities are only containers for components, which in turn represent (independent) data types. The core of sempr is a rule based rete reasoner, and entity-component pairs are made accessible to it. What has former been thought of as a processing module is now supposed to be implemented in a rule, as a combination of complex preconditions (previously implemented by listening to entity-events) and the rules effect (previously the body of the processEvent method).
- SemanticEntity for typesafe RDF-exposure of member variables
- RDFVector (previously RDFEntity)
- GEOS as replacement for GDAL
- Global coordinate systems now based on geographiclib
- RDFEntity is now an interface for iterable RDF containers
- registerChildEntity now public
- Problems with accessing/comparing RDFPropertyMap-entries
- libsqlite3-dev dependency in CMakeLists