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]