RDF-Query

 view release on metacpan or  search on metacpan

README  view on Meta::CPAN

         * 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 )