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 <dlo...@gmail.com> 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 <johns0...@gmail.com> 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?* > > >