RDF-Query
view release on metacpan or search on metacpan
* Added is_solution_modifier() methods to ::Algebra classes.
* Added labels and common patterns to service description template.
* Added more logic and debugging to aggregating triples into BGPs for SERVICE calls.
* Added optional restriction argument to ::Algebra::subpatterns_of_type.
* Added RDF::Query::Model::RDFTrine::BasicGraphPattner::graph() method.
* Added RDF::Query::Node::compare for sorting (either Trine or Query) node objects.
* Added RDF::Query::plan_class so that ::Federate can overload calls to ::Plan methods.
* Added support for computed statement generators (like ARQ's computed property support [e.g. list:member]).
* Added trial subsumes() methods to ::Algebra::BasicGraphPattern and ::Algebra::Triple.
* Algebra classes now call RDF::Query::algebra_fixup for optimization before falling back on normal fixup code.
* Allow equality test and disjunction filters in patterns that can be compiled to SQL.
* Fixed ::Algebra::GroupGraphPattern to use join_bnode_streams in cases where the bloom filter wasn't automatically created but instead provided by the user.
* Fixed ::Model::RDFTrine::as_string use with Quads.
* Fixed argument list for RDF::Query::Algebra::Service::_names_for_node called from bloom function.
* Fixed bug so ::Model::RDFTrine::meta may be called as a class method.
* Fixed RDF::Query::algebra_fixup to ignore service capabilities that would result in empty BGPs.
* Modified code for aggregate queries (though they are currently broken).
* Moved construction of bloom-filter-optimized patterns to RDF::Query::Algebra::GroupGraphPattern::_bloom_optimized_pattern().
* Moved initial federated service code into RDF::Query::fixup and ::algebra_fixup.
* Moved QEP generation code to RDF::Query::query_plan so it can be overloaded.
* Moved RDF::Query::add_service() to RDF::Query::Federate::add_service().
* Parsing service descriptions now more forgiving in the face of missing values.
* RDF::Query::Algebra::Triple::new now adds RDF::Query::Node::Variable objects for undefined nodes.
* RDF::Query::fixup() now only returns a construct pattern (the query pattern now being returned by RDF::Query::query_plan()).
* RDF::Query::Model::get_computed_statements now doesn't die if there's no query object present.
* RDF::Query::new() now accepts two-argument form with just $query and \%options.
* RDF::Query::Node::Literal objects now can compare as equal when they're of numeric type but the lexical values aren't numeric.
* RDF::Query::prune_plans now takes ExecutionContext as an argument, and in turn calls ::Plan::prune_plans.
* RDF::Query::query_plan() now returns all possible query plans when called in list context.
* RDF::Query::query_plans now calls RDF::Query::prune_plans to select from the list of possible QEPs.
* RDF::Trine::Node::Resource now escapes unicode in base URIs (now just relative URI part) before calling URI->new_abs.
* Removed now unused RDF::Query::construct() and RDF::Query::fixup().
* Removed old execute() code from ::Algebra classes.
* Removed unused redland fallback code from RDF::Query::Model::RDFTrine.
* Split RDF::Query::execute into prepare() and execute_plan() methods.
* Converted RDF::Query::execute() to use ::Plan classes.
* Updated ::Compiler::SQL to recognize ::Algebra::Project objects.
* Updates to RDF::Query::execute() to support explicit pre-binding lists (instead of just scalar values).
* ::Algebra::GroupGraphPattern now throws an exception if passed unblessed values as patterns.
* ::Federate now labels nodes in the QEP tree with applicable services.
* ::Model::debug() now shows data from the named graph model.
* ::Model::RDFTrine::add_uri now decodes resulting content as utf8 before proceeding.
* ::Model::RDFTrine::meta() probes the underlying store object to declare the proper 'store' class.
* ::Service::_names_for_node updated to use ::Plan classes for query execution (fixes use of the k:bloom filter).
* CLASSES:
* Added algebra classes for solution modifiers and query forms (construct, project).
* Added code and tests for Query Execution Plan classes RDF::Query::Plan::*.
* Added RDF::Query::Federate::Plan for federation-specific code.
* Added RDF::Query::BGPOptimizer implementing a basic optimizer for basic selectivity-based join ordering.
* Added RDF::Query::CostModel classes for computing/estimating the cost of executing a specific pattern.
* Added RDF::Query::ExecutionContext to hold all necessary information for query execution (query, model, bound variables).
* Added RDF::Query::ServiceDescription for parsing DARQ-style service descriptions.
* Added RDF::Query::VariableBindings to wrap existing HASH-based variable binding structure.
* Added stub ::Plan::ThresholdUnion class for running optimistic queries.
* Added workaround to RDFCore bridge so that RDF::Core doesn't die if getStmts is called with a Literal in the subj or pred position.
* Added a RequestedInterruptError exception class.
* Added code for RDF-Trine specific BGP query plans.
* Changed debugging in RDF::Query modules to use Log::Log4perl.
* Made SERVICE work again by rolling back streaming socket work (now commented out).
* Moved federation code to new RDF::Query::Federate class.
* Plan generation now includes any plans the model object can provide.
* RDF::Query now always uses a cost model (defaulting to ::Naive).
* RDF::Query::Federate now defaults to SPARQLP parser.
* Removed logging/warn calls from forked process in ::Service (was screwing up the parent-child IO pipe).
* Removed use of "DISTINCT" queries in SERVICE calls (for pipelining).
* ServiceDescription now only runs sofilter if ?subject/?object are bound.
* Started work on a more holistic approach to supporting service descriptions (instead of using add_computed_statement_generator()).
* Updated ::Algebra::Service to fork and use LWP's callback mechanism for concurrency.
* ::Algebra::Service now defers loading of content until the first result is requested.
* ::Model::RDFTrine now only produces BGP plans if there is no get_computed_statement_generators in the query object.
* Code now materializes all node identities before creating the Bloom filter (so capacity arg is accurate).
* Bloom filter use is now only attempted on SERVICE blocks that don't immediately contain a FILTER.
* Re-ordered conditionals so that the service-bloom-filter try block is called less frequently.
* SERVICE execution now uses non-identity reasoning Bloom filter function.
* SYNTAX and SERIALIZATION:
* Added from_sse method to ::Statement, ::Node.
* Added initial code for ARQ-style property paths.
* Added initial parser code for SPARQL Update (SPARUL) extension.
* Added new 'UNSAID' syntax for SPARQLP, implementing negation.
* Added parse_expr method to RDF::Query::Parser::SPARQL.
* Added RDF::Query::Algebra::Quad::bf() method.
* Fixed RDQL parser to qualify URIs before returning from parse().
* Fixed SSE serialization of Aggregates using '*' instead of a variable as the column.
* Removed (now unused) parser generator script.
* SPARQL parser now always adds a ::Algebra::Project (even when the query selects '*').
* SPARQL parser now creates ::Algebra::Construct objects for CONSTRUCT queries.
* SPARQL parser now puts ::Distinct above ::Sort algebras in the parse tree.
* SPARQLP parser now creates ::Project object as parent of any ::Aggregate.
* Turtle parser now doesn't modify the lexical value of numeric typed literals.
* Turtle parser now makes universal IDs for all blank node (even those with given IDs like _:xyz).
* Updated ::Algebra SSE serializations to conform to Jena's serialization syntax.
* Updated ::Algebra::Limit::sse to emit 'slice' serialization if its child is a ::Algebra::Offset.
* Updated as_sparql() methods to support the new ::Construct classes.
* Updated RDF::Query::sse to emit base and prefix serializations.
* Updated SPARQL parser and serializer tests to always assume an ::Algebra::Project on SELECT queries.
* Updated SSE serialization of ::Join::PushDownNestedLoop to use 'bind-join' terminology.
* Updates to SPARQLP parser to support FeDeRate BINDINGS keyword.
* ::Algebra::Distinct now does proper serialization in as_sparql().
* ::GroupGraphPattern::sse() updated to output the '(join ...)' only if the GGP has more than one pattern.
* OPTIMIZER:
* Added benchmark/plans.pl to show the runtimes of the available QEPs for a query.
* Added benchmark/costmodel.pl for testing the RDF::Query::CostModel.
* Added logging for execution time (time to construct iterator) of Triples, BGPs, GGPs and sorting.
* Added logging of cardinalities in ::Algebra::Triple, ::Algebra::BasicGraphPattern and ::Algebra::Service.
* Added logging to plan classes ::NestedLoop, ::Service, ::Triple.
* Naive plan is used in ::Federate::Plan::generate_plans only if no optimistic plans are available.
* Updated cost model code to work with ::Plan classes instead of ::Algebra classes.
* Logging code now uses sse serialization as log keys (because of expressions that can't be serialized as SPARQL).
* Logging object can now be passed to RDF::Query constructor.
* Updated logging of algebra execution to use SPARQL serialization as logging key.
* MISC:
* SPARQL parser now constructs ::Algebra::Project objects (had been in RDF::Query::execute).
* Updated RDF::Query to require version 0.108 of RDF::Trine.
( run in 0.944 second using v1.01-cache-2.11-cpan-df04353d9ac )