- Turtle output for construct queries
- Add bindings parameter that replaces variables with ground terms (safe query parameterization without special syntax)
- Fix query external for empty results, variable sequence and iri-columns.
- Pretty turtle write performance drastically improved (around 12x better)
- The IRI maplib:DefaultGraph is the default graph
- m.query_external(query, endpoint) lets you query an external SPARQL endpoint (currently only select and HTTP GET).
- Fix issue where count over zero solution mappings returned no rows (should return one row with zero as the count)
- Improve deserialization performance to hybrid storage and to in memory storage
- Bug fix for serialization of lang strings
- (Attempted?) Bug fix for disk based storage of categoricals on windows
- Serialization with disk based storage of categoricals - about 40x faster than ntriples read
- Fix performance issue for ORDER BY when cats are on disk
- Fix performance issue in queries with a lot of OPTIONAL clauses (see bugfix below)
- Fix issue where OPTIONAL clauses sometimes introduces duplicates
- Support for OPC UA mapping to RDF using m.map_opc_ua() providing the folder with NodeSet2 XMLs as an argument
- m.add_udf() allows the user to create a UDF working on Polars DataFrames where arguments form the columns. The function is callable from SPARQL.
- m.serialize("folder") and Model.deserialize("folder") serializes and deserializes the triples in a Model object super quickly (20x faster than ntriples in our bench).
- IndexingOptions no longer has subject_object_index argument as this is now default.
- Avoid panic when using pyarrow >= 24.0.0
- rep = m.validate() always produces rep.results() even when report_graph is specified.
- Facade X like mapping of dataframes to graph in m.map_df()
- Target counts for shapes are now part of the SHACL report graph
- Workaround for Polars issue that could sometimes produce errors in filter not exists
- Move away from rdf:_{n} predicate to represent lists in Facade-X as it is does not play nice with our partitioning
- Prefix maplib:https://datatreehouse.github.io/maplib/vocab#
- maplib:uuidv5 and maplib:struuidv5 functions
- m.templates_to_graph() materializes templates as triples in graph so they can be queried (Thank you @thenonameguy !)
- m.read(), m.reads() now eats hdt and m.write() spits it out. (Thank you @sihingkk !)
- Work around Polars issue where double not exists can return erroneous results
- Turn caching mechanism for on disk SHACL back on :-)
- Fix SHACL SPARQL issue with OPTIONAL {} that could return too few results.
- Escape certain characters after the prefix in prefixed IRIS.
- Move to latest Polars
- Move to A* search for optimal join sequencing - we do unfortunately not take into account nesting here yet.
- Fix issue in cross join detection / query planning.
- Bug fix for optimization for certain types of large queries with OPTIONAL and BIND.
- Improve error message when UNBOUND(?v) does not find ?v.
- Disk based cats panicked with duplicate string (large strings)
- Sometimes tried to write triples to disk (disabled functionality for the time being)
- Caching for SHACL rules with disk based storage improves validation performance
- Exists queries with nested subqueries could be true when they should be false
- Improve detection of cross joins, avoiding them better
- Integrate chrontext into maplib, enabled when m.add_virtualization() has been run.
- SHACL rules: incrementally build targets not always updated
- SPARQL adding now() and a few bugfixes having to do with multiple datatypes in expressions
- Improvements to query planning for large queries
- xsd:decimal is now represented internally as Decimal(precision=38,scale=12)
- Fix another instance of missing query parameters in debug
- max_iterations parameter for shacl rules (validate())
- Fix bug where comparison expressions involving multiple types could fail.
- Subject object indexing for deduplication now default on, improves load speeds for many small files
- Batch size for triples read now defaults to 10_000_000, reducing memory consumption.
- Fix issues with IF where having multiple types for "then" and "otherwise" could cause an exception
- Fix issue where THIS was not injected into SHACL SPARQL
- rules_debug in validate now prints every step so it is easier to debug recursive issues
- Fix rounding issue
- Improve error messages from SHACL rules
- Fix issue with regex and replace where pattern was of form str(iri).
- Fix issue where debug_rules could sometimes panic in validate()
- Add support for STRDT
- Add missing support for SPARQL targets in SHACL Rules
- Fix caching issue in Datalog engine
- Work around issue with timestamped dates, these are now read without the timestamp, but should be fixed properly at some point.
- SHACL rules now support recursion, and has multiple optimizations.
- Still missing conditions, other rule types than sparql construct, and taking ordering into account.
- Fix nondeterminism that could sometimes cause duplicate SHACL results
- SHACL could sometimes contain extra results for deeply nested shape graphs
- SHACL graph no longer includes conforms bool for results, this one is just needed when include_details=True
- map_triples, map, map_default "df"-arg renamed to "data" as it now takes alternatively a DataFrame or a SolutionMappings object, in which case types can be specified for columns. A query run with solution_mappings=True can thus be piped into these methods.
- parameters for query and update for the PVALUES construction now is a dict with SolutionMappings values.
- ValidationReport no longer has method graph(), instead, use the report_graph argument of validate to specify a named graph for the report. This also means that validate() argument include_shapes_graph is gone.
- Rudimentary shacl rules support (only SPARQL construct), no recursion yet. Use the inferences_graph-argument to validate to persist inferred triples to a named graph.
- Fix for #48
- SPARQL parser returns the bad part of the query
- Fix for FTS issue when enabling for multiple named graphs
- Fix lang string issue with FTS
- Fix for missing triples in pretty turtle serialization under certain conditions involving orphaned blank nodes.
- Implement md5, sha1 and encode_for_uri functions.
- General improvements in read / map performance
- Improvements in error handling for PValues, missing Function implementations
- Fix bug in recursive constraints in SHACL
- Issue when using Datalog with SPARQL construct syntax
- Issue with lang string literal in SPARQL construct template
- Graceful error handling for SPARQL queries that crash in Polars.
- Contains function in SPARQL crashed with lang strings under certain circumstances
- All types with string types are now internally represented as u32 (previously it was only xsd:string, blanks and iris)
- Result path missing in SPARQL constraints
- Bug fix for issue affecting SPARQL constraints with lang string messages with unbound vars of multiple types.
- CIM XML import removes superfluous "#_" from iris.
- Basic support for disk based storage of categorical maps.
- Fix extra characters in CIM XML URIs by default
- Multiple bugfixes for SHACL
- read() and reads() for json-ld is now supported. Note that contexts are not resolved against the internet but must be provided in a dict due to security concerns.
- Pretty turtle writing has been parallelized, improving performance.
- CIM XML parsing is now natively supported
- Added possibility of setting number of triples per batch when reading serialization formats.
- map_json is now compliant with Facade X.
- Fixed various cases where a panic or unwrap happens instead of a proper error.
- m.map_json() maps a json file or string to rdf triples.
- Writing turtle could sometimes write erroneous triples.
maplib.explore()is deprecated, use the explore method on aModelinstead.Model.explore()no longer supports opening a browser window automatically. Usewebbrowser.open(s.url, new=2)instead. Wheresis returned fromexplore()- Release of pretty turtle printer. It is still missing:
- Anonymization of blank nodes that only have a single incoming reference.
- Support for nested lists
- Datalog inference now works on SPARQL construct in preparation for SHACL rules support
- Improvements to prefix handling:
- Default prefixes only shadowed by adding prefixes to Model
- Prefixes set in pretty turtle print only shadow Model prefixes
- Fixed improper serialization of e.g. newlines in new pretty turtle printer
- Fixed issue where empty triples could be added
- Fixed several issues that could lead to OOM in the SHACL engine
- Fixed panic in CIM xml exporter that should be error message
- IRIs are now compressed in memory
- SELECT * has column ordering according to when the variable is used in the query, not alphabetical as previously.
- Inverse predicates missing from CIM exports
- Setting debug=True in query now prints the debugging of why the query has no solutions.
- Fix issue where byte datatypes were incorrectly created with the polars string datatype.
- Template printing now uses prefixes.
- Exception handling for missing functions.