Aklakan commented on issue #1557:
URL: https://github.com/apache/jena/issues/1557#issuecomment-1260883788

   > I don't see why you want to intercept the query - why send the wrong query 
in the first place?
   
   ### Performance
   
   The performance degradation introduced by using FROM clauses on our large 
datasets varies from "noticeably slower" via "unbearably slow" to "doesn't work 
anymore". For example, the aforementioned counting of triples no longer 
returned results.
   
   It's a certainly an ugly tradeoff  - but between "strictly standard 
conforming result set but unbearably slow" and "usually same result set (unless 
there are duplicates in the union'd graphs) in a reasonable amount of time" the 
latter is the practically relevant one our partners want to see.
   
   ### Upcoming Use Case: Graph Groups
   
   Furthermore, a general requirement we now have in one of our projects is to 
allow queries need to be able to refer to
   "virtual" graph names in the FROM clause which can be transparently remapped 
to the physical ones.
   This is essentially Virtuoso's graph groups where FROM (NAMED) clauses can
   be "macro expanded"; e.g. FROM <x> is conceptually turned into `FROM <a> 
FROM <b> ...`.
   
   It is very easy to implement these kind features on ARQ level. All that 
would be needed is a way to pass the original dataset graph and dataset 
descriptions from Fuseki down to ARQ.
   
   Of course things would have to wired up in more sophisticated ways with 
Fuseki if one wanted to add user-sensitive rules. E.g. when authenticated as 
user X then graph G maps to (A, B) and as user Y graph G maps to C. But that's 
not (yet) what we need.
   
   > DynamicDataset work looks reversible.
   
   The wrapped original dataset is not accessible (the "projected" attribute) 
:( (unless using brittle reflection).
   I would also be fine if unwrapping the orginal Dataset and 
DatasetDescription via DynamicDatasetGraph was possible.
   
   ```java
   public static class DynamicDatasetGraph extends DatasetGraphReadOnly 
implements DatasetGraphWrapperView {
       private final DatasetGraph projected;
   
       public DynamicDatasetGraph(DatasetGraph viewDSG, DatasetGraph baseDSG) {
           super(viewDSG, baseDSG.getContext().copy());
           this.projected = baseDSG;
       }
   }
   
   ```
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to