[ https://issues.apache.org/jira/browse/JENA-1391?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16307536#comment-16307536 ]
ASF GitHub Bot commented on JENA-1391: -------------------------------------- GitHub user ajs6f opened a pull request: https://github.com/apache/jena/pull/337 JENA-1391: Dataset dyadic views, Model and Dataset Stream collectors This is a bit preliminary-- probably needs some more tests. But I wanted to get it out there for early comments so I can take them into account and respond to criticism. You can merge this pull request into a Git repository by running: $ git pull https://github.com/ajs6f/jena JENA-1391 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/jena/pull/337.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #337 ---- commit 9fd1f41870b730fcf5ea528b9fd27cd7a4ceb438 Author: ajs6f <ajs6f@...> Date: 2017-10-01T14:02:28Z First draft of Collector utilities commit 197abd4e0addd131714a541b5a900cea719b2c37 Author: ajs6f <ajs6f@...> Date: 2017-10-12T14:07:12Z Refactoring to assume fresh Context for any Dataset view commit 4d6d36969c502ad2d5df83c6324b3813993691ca Author: ajs6f <ajs6f@...> Date: 2017-11-03T18:06:22Z Better use of preexisting Pair type, refactoring, introducing DifferenceDatasetGraph commit 8416e028a8a77e44f351609f4056f0a032cfedd3 Author: ajs6f <ajs6f@...> Date: 2017-11-03T19:25:04Z Adding method impls to DatasetLib commit ccf011aca6d5aef9186a510a53f3b32bb28d2982 Author: ajs6f <ajs6f@...> Date: 2017-11-04T17:59:16Z Adding IntersectionDatasetGraph commit 53861bb36212da86f7e88815bf7a29ffbd47bc7e Author: ajs6f <ajs6f@...> Date: 2017-11-04T18:02:07Z Cleaner threading of Context through constructors and statics commit e5cc28ba852153057b37b6881c4ec1f48013de2d Author: ajs6f <ajs6f@...> Date: 2017-11-04T18:11:46Z Cleanup between DatasetLib and DatasetCollector commit de74807555a2efce4081eee2028cdc4e7f92504e Author: ajs6f <ajs6f@...> Date: 2017-11-05T14:13:32Z Correcting whitespace commit 272b3c10687b9e643f869d62055edec68d202e53 Author: ajs6f <ajs6f@...> Date: 2017-11-05T14:15:04Z Correcting type param names commit d4a22357ec714ac2dde218d242a36bf7f1df7d2d Author: ajs6f <ajs6f@...> Date: 2017-11-17T17:05:18Z Further simplifying new Collector API commit 5aa0e26ca4d3dd46f77a9c993006b5cba1a6b178 Author: ajs6f <ajs6f@...> Date: 2017-11-19T21:37:54Z Minor refactoring commit 9fd57ea0593d755ceaa9ae2a78283a4940cd8d48 Author: ajs6f <ajs6f@...> Date: 2017-12-15T20:55:05Z More tests commit bbf0fc6c6ac78111ffd8827ac03a80d6ff687a7e Author: ajs6f <ajs6f@...> Date: 2017-12-18T14:43:10Z Removing extra file commit b90c14364e3355f66ab063c797e8c476515b0ef3 Author: ajs6f <ajs6f@...> Date: 2017-12-29T14:03:02Z Further test coverage commit d1e6b90d9cedfe063ae088d3ec595f1b629827e8 Author: ajs6f <ajs6f@...> Date: 2017-12-29T14:29:40Z Further test coverage commit ca28e9f77bc8bd4f1e6de34bd6cb7cd8d793f324 Author: ajs6f <ajs6f@...> Date: 2017-12-29T15:04:36Z Fixing license headers, more tests commit dcd5cd6337f063e832bb9f569eb27da4d167814a Author: ajs6f <ajs6f@...> Date: 2017-12-29T15:08:26Z Adding license header commit 973c6dec5111bcc8a617e0ba8a27bbafba0c759c Author: ajs6f <ajs6f@...> Date: 2017-12-29T15:13:04Z Adding license headers commit 5e62aff38ea56a76af047451b546153c3b3fc76a Author: ajs6f <ajs6f@...> Date: 2017-12-29T15:37:28Z Adding more public API commit 6162bc0928d453bc193a1b28e8d5626610927376 Author: ajs6f <ajs6f@...> Date: 2017-12-29T15:53:27Z Cleanup in TIM commit 8e9881f52e1d8c9b0ce62883d6485e367689fd7e Author: ajs6f <ajs6f@...> Date: 2017-12-29T16:33:55Z Linking tests into build suite commit 01ed060f71e577d41edf2c8501e155eafbd1bb56 Author: ajs6f <ajs6f@...> Date: 2017-12-29T17:54:56Z Beginning tests of dataset collectors commit 5fa9101f383b7f86103024a3aa218754dc00ab8f Author: ajs6f <ajs6f@...> Date: 2017-12-31T18:45:09Z Tests for UnionDatasetCollector commit 9562e71fb05d5c9910e43457a51f21eeeb188721 Author: ajs6f <ajs6f@...> Date: 2017-12-31T18:45:47Z Add license headers commit 446a6093885920b0a516187cc53aa7e4158ad70c Author: ajs6f <ajs6f@...> Date: 2017-12-31T19:19:06Z Test for TestIntersectionDatasetCollector now passes commit 8f725b6064820930a7299cd16f06a0bb40029ed8 Author: ajs6f <ajs6f@...> Date: 2017-12-31T19:26:34Z Stronger test for TestIntersectionDatasetCollector commit 51df4d8c9b386e82edf8a6de98f13cfc917e1f9e Author: ajs6f <ajs6f@...> Date: 2017-12-31T19:29:11Z License header commit 086f9aa4a8486587699faf99f144da54718f2cfa Author: ajs6f <ajs6f@...> Date: 2017-12-31T19:32:17Z Locking down Collector API commit 1f794c7f6e1d05ed3cddcd3760cee3f601677bb9 Author: ajs6f <ajs6f@...> Date: 2018-01-01T01:28:26Z Correct behavior on Transational::abort commit e1c09188f720a7308f3b7b0b0c8c313eefcd9657 Author: ajs6f <ajs6f@...> Date: 2018-01-01T01:34:29Z Better importing of throwNoMutationAllowed() ---- > Add Convenience Methods to Dataset > ---------------------------------- > > Key: JENA-1391 > URL: https://issues.apache.org/jira/browse/JENA-1391 > Project: Apache Jena > Issue Type: Improvement > Components: ARQ > Affects Versions: Jena 3.4.0 > Reporter: Adam Jacobs > Assignee: A. Soroka > Priority: Trivial > > The Dataset interface could provide several convenience methods similar to > the Model interface, allowing usability of RDF quads on par with RDF triples. > Specific examples include, > # add(Dataset) > # remove(Dataset) > # union(Dataset) > # intersection(Dataset) > # difference(Dataset) > # isEmpty() > Following is a possible implementation of these methods. > {code:java} > default Dataset add(Dataset d) { > this.getDefaultModel().add(d.getDefaultModel()); > d.listNames().forEachRemaining(name -> > this.getNamedModel(name).add(d.getNamedModel(name))); > return this; > } > default Dataset remove(Dataset d) { > this.getDefaultModel().remove(d.getDefaultModel()); > d.listNames().forEachRemaining(name -> > this.getNamedModel(name).remove(d.getNamedModel(name))); > return this; > } > default Dataset union(Dataset d) { > return DatasetFactory.create().add(this).add(d); > } > default Dataset difference(Dataset d) { > Dataset output = DatasetFactory.create(); > > output.setDefaultModel(this.getDefaultModel().difference(d.getDefaultModel())); > this.listNames().forEachRemaining(name -> { > Model difference = > this.getNamedModel(name).difference(d.getNamedModel(name)); > if (!difference.isEmpty()) output.addNamedModel(name, difference); > }); > return output; > } > default Dataset intersection(Dataset d) { > Dataset output = DatasetFactory.create(); > > output.setDefaultModel(this.getDefaultModel().intersection(d.getDefaultModel())); > Set<String> names = this.names(); > names.retainAll(d.names()); > names.forEach(name -> { > Model intersection = > this.getNamedModel(name).intersection(d.getNamedModel(name)); > if (!intersection.isEmpty()) output.addNamedModel(name, > intersection); > }); > return output; > } > default Set<String> names() { > Set<String> names = new HashSet<>(); > this.listNames().forEachRemaining(names::add); > return names; > } > default boolean isEmpty() { > return this.asDatasetGraph().isEmpty(); > } > {code} -- This message was sent by Atlassian JIRA (v6.4.14#64029)