Two things: 1. Rya will reject a blanket ?s ?p ?o query in order to avoid a full table scan (even if the G is set).
2. Here's the code where the specific graph is set [1]. Rya sets the "ColumnFamily" value on the Accumulo scanner. This filtering/seeking is all performed on the Accumulo Tablet server. --Aaron [1] https://github.com/apache/incubator-rya/blob/develop/dao/accumulo.rya/src/main/java/mvm/rya/accumulo/query/AccumuloRyaQueryEngine.java#L370 On Sat, Mar 26, 2016 at 8:19 AM Brian McBride <[email protected]> wrote: > Aaron replied: > [[ > > No... it does not. > > We've run into extreme use cases where a graph is created for each > statement (as means of providing properties for a statement). In that > case, Accumulo would not be happy if Rya created a locality group for each > graph. > > --Aaron > > ]] > > Again, thanks Aaron. I can see that Accumulo would not be happy in > those circumstances. > > I've been trying to understand how Rya handles named graphs. To me it > looks like it treats them as a filter on the results of matching S P O > patterns. Since there is no index that includes the G component of a > quad, and locality groups are not used, I don't see how Rya can limit > its scans to a specific graph. To scan a specific graph, it would have > to scan all the matching triples and filter out the ones from the > specific graph. Is that right? Or is there some Accumulo magic I've > missed. > > Queries like > > SELECT * { graph <http://example.org/foo> { ?s ?p ?o } } > > fail with an exception. > > A query like > > SELECT DISTINCT ?c { graph <http://example.org/foo> { ?s a ?c } } > > will scan all the rdf:type quads in the store, not just those in the > specified graph. (Is that right?) > > Is this by design, or does it just reflect the current state of > development? > > Brian > > > -- > Epimorphics Ltd, http://www.epimorphics.com > Registered address: Court Lodge, 105 High Street, Portishead, Bristol BS20 > 6PT > Epimorphics Ltd. is a limited company registered in England (number > 7016688) > >
