Way to go John!  That was fast turn around!
We just pulled your pull request so now it is in the Master branch of Rya.
I had some doubts about how it would handle graph-context, but on closer
inspection, that is handled outside of the strategy.

Anything else I can help you fix in Rya?  Feel free to look thru the Jira
issues.
david.

On Wed, Jan 4, 2017 at 6:16 PM, John Smith <[email protected]> wrote:

> Thank you! I got it to work using your suggestion.  Here is a pull request
> with this capability (https://github.com/apache/incubator-rya/pull/136).
> I just had to added this NullRowTriplePatternStrategy to RyaTripleContext
> default triple pattern strategies, so that it is used :)
>
> On Wed, Jan 4, 2017 at 9:21 AM, David Lotts <[email protected]> wrote:
>
> > The error is thrown here:
> > rya/dao/accumulo.rya/src/main/java/org/apache/rya/accumulo/
> > query/AccumuloRyaQueryEngine.java
> > line 142
> > ````
> >                strategy = ryaContext.retrieveStrategy(stmt);
> >                 if (strategy == null) {
> >                     throw new IllegalArgumentException("TriplePattern["
> +
> > stmt + "] not supported");
> >                 }
> > ````
> > The strategy is TABLE_LAYOUT and the scan range.
> > The TABLE_LAYOUT  is which table it scans to match the statement pattern:
> > SPO, POS, or OSP, and
> > the scan range is a start and stop byte[] range for scanning that table.
> >
> > Try creating a new strategy and see where that takes you:
> >
> > 1. Copy class SpoWholeRowTriplePatternStrategy to
> > NullRowTriplePatternStrategy,
> >
> > /rya.api/src/main/java/org/apache/rya/api/query/strategy/wholerow/
> > SpoWholeRowTriplePatternStrategy.java
> > 2. fix the handle() method so that it returns true for all null
> parameters,
> > and
> > 3. replace the defineRange() with this:
> >
> >     defineRange(RyaURI, RyaURI, RyaType, RyaURI,
> > RdfCloudTripleStoreConfiguration) {
> >             start = new Byte[] { /* empty array */  };  // Scan from the
> > beginning of the Accumulo table.
> >             stop = LAST_BYTES;    // Scan to the end, up through things
> > beginning with 0xff.
> >             return new RdfCloudTripleStoreUtils.
> CustomEntry<TABLE_LAYOUT,
> > ByteRange>(TABLE_LAYOUT.SPO, new ByteRange(start, stop));
> >     }
> >
> > Then add a new instance of NullRowTriplePatternStrategy in method:
> > org.apache.rya.api.resolver.RyaTripleContext.
> > addDefaultTriplePatternStrategies(boolean)
> >
> > And your done!
> > There might be some oddness about creating a range with an empty start
> > array.  Might be better to skip the range when creating the scanner.
> > david.
> >
> > On Tue, Jan 3, 2017 at 4:01 PM, John Smith <[email protected]> wrote:
> >
> > > *I was looking to make RYA more SPARQL1.1 compliant by enabling the
> > > capability to perform the following query*
> > >
> > > *SELECT * { s? p? o?  } *
> > >
> > >
> > >
> > >
> > >
> > > *I found that this capability is already supported, it is simply
> disabled
> > > ( RYA-83 <https://issues.apache.org/jira/browse/RYA-83> )Could someone
> > > point me to where in the code it is disabled?I would be interested in
> > > better understanding the reasons for disabling this capability.  All
> that
> > > is said in RYA-83 is that it would perform a full table scan.  I
> suppose
> > > that could be expensive.  But just because a query is expensive is that
> > > reason enough to prevent someone from issuing the query?  What if the
> > user
> > > is willing to pay the cost of running an expensive query?  What are
> your
> > > thoughts?*
> > >
> >
>

Reply via email to