Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 48A83200ABD for ; Sat, 14 May 2016 16:03:07 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 47338160A1D; Sat, 14 May 2016 14:03:07 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id B666C160A21 for ; Sat, 14 May 2016 16:03:04 +0200 (CEST) Received: (qmail 40708 invoked by uid 500); 14 May 2016 14:03:03 -0000 Mailing-List: contact commits-help@jena.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@jena.apache.org Delivered-To: mailing list commits@jena.apache.org Received: (qmail 39692 invoked by uid 99); 14 May 2016 14:03:00 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 14 May 2016 14:03:00 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id D5DEBEAB44; Sat, 14 May 2016 14:03:00 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: andy@apache.org To: commits@jena.apache.org Date: Sat, 14 May 2016 14:03:33 -0000 Message-Id: In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [34/42] jena git commit: Merge commit 'refs/pull/143/head' of github.com:apache/jena archived-at: Sat, 14 May 2016 14:03:07 -0000 http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-arq/src/main/java/org/apache/jena/sparql/engine/index/LinearIndex.java ---------------------------------------------------------------------- diff --cc jena-arq/src/main/java/org/apache/jena/sparql/engine/index/LinearIndex.java index c49ddaf,c49ddaf..56267bb --- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/index/LinearIndex.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/index/LinearIndex.java @@@ -1,112 -1,112 +1,112 @@@ --/** -- * Licensed to the Apache Software Foundation (ASF) under one -- * or more contributor license agreements. See the NOTICE file -- * distributed with this work for additional information -- * regarding copyright ownership. The ASF licenses this file -- * to you under the Apache License, Version 2.0 (the -- * "License"); you may not use this file except in compliance -- * with the License. You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --package org.apache.jena.sparql.engine.index; -- --import java.util.ArrayList; --import java.util.List; --import java.util.Map; --import java.util.Set; -- --import org.apache.jena.graph.Node ; --import org.apache.jena.sparql.algebra.Algebra ; --import org.apache.jena.sparql.core.Var ; --import org.apache.jena.sparql.engine.QueryIterator ; --import org.apache.jena.sparql.engine.binding.Binding ; --import org.apache.jena.sparql.engine.binding.BindingHashMap ; -- --/** -- * A slow "index" that looks for data by searching linearly through a set. -- * Only used when the indexed data contains fewer bound variables than expected. -- * Note that this class is only used for a MINUS operation that is removing data -- * with potentially unbound values, and is therefore rarely used. -- * -- * TODO: If this index starts to be used more often then consider various options for -- * indexing on the known bound variables. -- * One possibility is for each variable (found in commonVars) to take -- * the value of a var/value pair and TreeMap this to a set of Bindings that it occurs in. -- * This would offer a reduced set to search, and set intersections may also work -- * (intersections like this could be done on Binding reference equality rather than value). -- * TreeMap is suggested here, since there would be commonVars.size() maps, which would take -- * a lot of heap, particularly since performance of this class is only an issue when the -- * data to search is significant. -- */ -- --public class LinearIndex implements IndexTable { -- // Contribution from P Gearon (@quoll) -- final Set commonVars ; -- List table = new ArrayList<>() ; -- -- public LinearIndex(Set commonVars, QueryIterator data) -- { -- this.commonVars = commonVars ; -- while ( data.hasNext() ) -- table.add(data.next()) ; -- data.close() ; -- } -- -- public LinearIndex(Set commonVars, QueryIterator data, Set loadedData, Map mappings) -- { -- this.commonVars = commonVars ; -- for ( HashIndexTable.Key key: loadedData ) -- table.add(toBinding(key, mappings)) ; -- -- while ( data.hasNext() ) -- table.add(data.next()) ; -- data.close() ; -- } -- -- @Override -- public boolean containsCompatibleWithSharedDomain(Binding bindingLeft) -- { -- if ( commonVars.size() == 0 ) -- return false ; -- -- for ( Binding bindingRight: table ) -- { -- if ( hasCommonVars(bindingLeft, bindingRight) -- && Algebra.compatible(bindingLeft, bindingRight) ) -- return true ; -- } -- return false ; -- } -- -- private boolean hasCommonVars(Binding left, Binding right) -- { -- for ( Var v: commonVars ) -- { -- if ( left.contains(v) && right.contains(v) ) -- return true ; -- } -- return false; -- } -- -- static Binding toBinding(HashIndexTable.Key key, Map mappings) -- { -- Node[] values = key.getNodes() ; -- BindingHashMap b = new BindingHashMap() ; -- for (Map.Entry mapping: mappings.entrySet()) -- { -- Node value = values[mapping.getValue()] ; -- if ( value != null ) -- b.add(mapping.getKey(), value) ; -- } -- return b ; -- } --} -- ++/** ++ * Licensed to the Apache Software Foundation (ASF) under one ++ * or more contributor license agreements. See the NOTICE file ++ * distributed with this work for additional information ++ * regarding copyright ownership. The ASF licenses this file ++ * to you under the Apache License, Version 2.0 (the ++ * "License"); you may not use this file except in compliance ++ * with the License. You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. ++ */ ++ ++package org.apache.jena.sparql.engine.index; ++ ++import java.util.ArrayList; ++import java.util.List; ++import java.util.Map; ++import java.util.Set; ++ ++import org.apache.jena.graph.Node ; ++import org.apache.jena.sparql.algebra.Algebra ; ++import org.apache.jena.sparql.core.Var ; ++import org.apache.jena.sparql.engine.QueryIterator ; ++import org.apache.jena.sparql.engine.binding.Binding ; ++import org.apache.jena.sparql.engine.binding.BindingHashMap ; ++ ++/** ++ * A slow "index" that looks for data by searching linearly through a set. ++ * Only used when the indexed data contains fewer bound variables than expected. ++ * Note that this class is only used for a MINUS operation that is removing data ++ * with potentially unbound values, and is therefore rarely used. ++ * ++ * TODO: If this index starts to be used more often then consider various options for ++ * indexing on the known bound variables. ++ * One possibility is for each variable (found in commonVars) to take ++ * the value of a var/value pair and TreeMap this to a set of Bindings that it occurs in. ++ * This would offer a reduced set to search, and set intersections may also work ++ * (intersections like this could be done on Binding reference equality rather than value). ++ * TreeMap is suggested here, since there would be commonVars.size() maps, which would take ++ * a lot of heap, particularly since performance of this class is only an issue when the ++ * data to search is significant. ++ */ ++ ++public class LinearIndex implements IndexTable { ++ // Contribution from P Gearon (@quoll) ++ final Set commonVars ; ++ List table = new ArrayList<>() ; ++ ++ public LinearIndex(Set commonVars, QueryIterator data) ++ { ++ this.commonVars = commonVars ; ++ while ( data.hasNext() ) ++ table.add(data.next()) ; ++ data.close() ; ++ } ++ ++ public LinearIndex(Set commonVars, QueryIterator data, Set loadedData, Map mappings) ++ { ++ this.commonVars = commonVars ; ++ for ( HashIndexTable.Key key: loadedData ) ++ table.add(toBinding(key, mappings)) ; ++ ++ while ( data.hasNext() ) ++ table.add(data.next()) ; ++ data.close() ; ++ } ++ ++ @Override ++ public boolean containsCompatibleWithSharedDomain(Binding bindingLeft) ++ { ++ if ( commonVars.size() == 0 ) ++ return false ; ++ ++ for ( Binding bindingRight: table ) ++ { ++ if ( hasCommonVars(bindingLeft, bindingRight) ++ && Algebra.compatible(bindingLeft, bindingRight) ) ++ return true ; ++ } ++ return false ; ++ } ++ ++ private boolean hasCommonVars(Binding left, Binding right) ++ { ++ for ( Var v: commonVars ) ++ { ++ if ( left.contains(v) && right.contains(v) ) ++ return true ; ++ } ++ return false; ++ } ++ ++ static Binding toBinding(HashIndexTable.Key key, Map mappings) ++ { ++ Node[] values = key.getNodes() ; ++ BindingHashMap b = new BindingHashMap() ; ++ for (Map.Entry mapping: mappings.entrySet()) ++ { ++ Node value = values[mapping.getValue()] ; ++ if ( value != null ) ++ b.add(mapping.getKey(), value) ; ++ } ++ return b ; ++ } ++} ++ http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateEngine.java ---------------------------------------------------------------------- diff --cc jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateEngine.java index 464f1c6,464f1c6..d8ef828 --- a/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateEngine.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateEngine.java @@@ -1,43 -1,43 +1,43 @@@ --/* -- * Licensed to the Apache Software Foundation (ASF) under one -- * or more contributor license agreements. See the NOTICE file -- * distributed with this work for additional information -- * regarding copyright ownership. The ASF licenses this file -- * to you under the Apache License, Version 2.0 (the -- * "License"); you may not use this file except in compliance -- * with the License. You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --package org.apache.jena.sparql.modify; -- -- --/** -- * An UpdateEngine provides an interface to execute a SPARQL update request. -- * An update engine is use-once; that is, it executes a single SPARQL Update request -- * (there may be multiple operations in one request). -- */ --public interface UpdateEngine --{ -- /** -- * Signal start of a request being executed -- */ -- public void startRequest(); -- -- /** -- * Signal end of a request being executed -- */ -- public void finishRequest(); -- -- /** -- * Returns an {@link UpdateSink} that accepts Update operations -- */ -- public UpdateSink getUpdateSink(); --} ++/* ++ * Licensed to the Apache Software Foundation (ASF) under one ++ * or more contributor license agreements. See the NOTICE file ++ * distributed with this work for additional information ++ * regarding copyright ownership. The ASF licenses this file ++ * to you under the Apache License, Version 2.0 (the ++ * "License"); you may not use this file except in compliance ++ * with the License. You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. ++ */ ++ ++package org.apache.jena.sparql.modify; ++ ++ ++/** ++ * An UpdateEngine provides an interface to execute a SPARQL update request. ++ * An update engine is use-once; that is, it executes a single SPARQL Update request ++ * (there may be multiple operations in one request). ++ */ ++public interface UpdateEngine ++{ ++ /** ++ * Signal start of a request being executed ++ */ ++ public void startRequest(); ++ ++ /** ++ * Signal end of a request being executed ++ */ ++ public void finishRequest(); ++ ++ /** ++ * Returns an {@link UpdateSink} that accepts Update operations ++ */ ++ public UpdateSink getUpdateSink(); ++} http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateRequestSink.java ---------------------------------------------------------------------- diff --cc jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateRequestSink.java index 51fbe45,51fbe45..76f520e --- a/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateRequestSink.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateRequestSink.java @@@ -1,75 -1,75 +1,75 @@@ --/* -- * Licensed to the Apache Software Foundation (ASF) under one -- * or more contributor license agreements. See the NOTICE file -- * distributed with this work for additional information -- * regarding copyright ownership. The ASF licenses this file -- * to you under the Apache License, Version 2.0 (the -- * "License"); you may not use this file except in compliance -- * with the License. You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --package org.apache.jena.sparql.modify; -- --import org.apache.jena.sparql.core.Prologue ; --import org.apache.jena.sparql.modify.request.QuadDataAcc ; --import org.apache.jena.sparql.modify.request.QuadDataAccSink ; --import org.apache.jena.sparql.modify.request.UpdateDataDelete ; --import org.apache.jena.sparql.modify.request.UpdateDataInsert ; --import org.apache.jena.update.Update ; --import org.apache.jena.update.UpdateRequest ; -- --public class UpdateRequestSink implements UpdateSink --{ -- final UpdateRequest updateRequest; -- -- public UpdateRequestSink(UpdateRequest updateRequest) -- { -- this.updateRequest = updateRequest; -- } -- -- @Override -- public void send(Update update) -- { -- updateRequest.add(update); -- } -- -- @Override -- public void flush() -- { } -- -- @Override -- public void close() -- { } -- -- @Override -- public Prologue getPrologue() -- { -- return updateRequest; -- } -- -- @Override -- public QuadDataAccSink createInsertDataSink() -- { -- QuadDataAcc quads = new QuadDataAcc(); -- send(new UpdateDataInsert(quads)); -- -- return quads; -- } -- -- @Override -- public QuadDataAccSink createDeleteDataSink() -- { -- QuadDataAcc quads = new QuadDataAcc(); -- send(new UpdateDataDelete(quads)); -- -- return quads; -- } --} ++/* ++ * Licensed to the Apache Software Foundation (ASF) under one ++ * or more contributor license agreements. See the NOTICE file ++ * distributed with this work for additional information ++ * regarding copyright ownership. The ASF licenses this file ++ * to you under the Apache License, Version 2.0 (the ++ * "License"); you may not use this file except in compliance ++ * with the License. You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. ++ */ ++ ++package org.apache.jena.sparql.modify; ++ ++import org.apache.jena.sparql.core.Prologue ; ++import org.apache.jena.sparql.modify.request.QuadDataAcc ; ++import org.apache.jena.sparql.modify.request.QuadDataAccSink ; ++import org.apache.jena.sparql.modify.request.UpdateDataDelete ; ++import org.apache.jena.sparql.modify.request.UpdateDataInsert ; ++import org.apache.jena.update.Update ; ++import org.apache.jena.update.UpdateRequest ; ++ ++public class UpdateRequestSink implements UpdateSink ++{ ++ final UpdateRequest updateRequest; ++ ++ public UpdateRequestSink(UpdateRequest updateRequest) ++ { ++ this.updateRequest = updateRequest; ++ } ++ ++ @Override ++ public void send(Update update) ++ { ++ updateRequest.add(update); ++ } ++ ++ @Override ++ public void flush() ++ { } ++ ++ @Override ++ public void close() ++ { } ++ ++ @Override ++ public Prologue getPrologue() ++ { ++ return updateRequest; ++ } ++ ++ @Override ++ public QuadDataAccSink createInsertDataSink() ++ { ++ QuadDataAcc quads = new QuadDataAcc(); ++ send(new UpdateDataInsert(quads)); ++ ++ return quads; ++ } ++ ++ @Override ++ public QuadDataAccSink createDeleteDataSink() ++ { ++ QuadDataAcc quads = new QuadDataAcc(); ++ send(new UpdateDataDelete(quads)); ++ ++ return quads; ++ } ++} http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateSink.java ---------------------------------------------------------------------- diff --cc jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateSink.java index 3a36825,3a36825..41530b2 --- a/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateSink.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateSink.java @@@ -1,41 -1,41 +1,41 @@@ --/* -- * Licensed to the Apache Software Foundation (ASF) under one -- * or more contributor license agreements. See the NOTICE file -- * distributed with this work for additional information -- * regarding copyright ownership. The ASF licenses this file -- * to you under the Apache License, Version 2.0 (the -- * "License"); you may not use this file except in compliance -- * with the License. You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --package org.apache.jena.sparql.modify; -- --import org.apache.jena.atlas.lib.Sink ; --import org.apache.jena.sparql.core.Prologue ; --import org.apache.jena.sparql.modify.request.QuadDataAccSink ; --import org.apache.jena.update.Update ; -- --/** -- * An {@link UpdateSink} is an object usually created by a container (such as a storage engine -- * or an {@link org.apache.jena.update.UpdateRequest}) that can process or store a single SPARQL Update -- * request which consists of one or more SPARQL Update operations. -- */ --// TODO More documentation! --public interface UpdateSink extends Sink --{ -- public Prologue getPrologue(); -- -- // TODO make an interface for the quad sinks -- public QuadDataAccSink createInsertDataSink(); -- -- public QuadDataAccSink createDeleteDataSink(); -- ++/* ++ * Licensed to the Apache Software Foundation (ASF) under one ++ * or more contributor license agreements. See the NOTICE file ++ * distributed with this work for additional information ++ * regarding copyright ownership. The ASF licenses this file ++ * to you under the Apache License, Version 2.0 (the ++ * "License"); you may not use this file except in compliance ++ * with the License. You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. ++ */ ++ ++package org.apache.jena.sparql.modify; ++ ++import org.apache.jena.atlas.lib.Sink ; ++import org.apache.jena.sparql.core.Prologue ; ++import org.apache.jena.sparql.modify.request.QuadDataAccSink ; ++import org.apache.jena.update.Update ; ++ ++/** ++ * An {@link UpdateSink} is an object usually created by a container (such as a storage engine ++ * or an {@link org.apache.jena.update.UpdateRequest}) that can process or store a single SPARQL Update ++ * request which consists of one or more SPARQL Update operations. ++ */ ++// TODO More documentation! ++public interface UpdateSink extends Sink ++{ ++ public Prologue getPrologue(); ++ ++ // TODO make an interface for the quad sinks ++ public QuadDataAccSink createInsertDataSink(); ++ ++ public QuadDataAccSink createDeleteDataSink(); ++ } http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateVisitorSink.java ---------------------------------------------------------------------- diff --cc jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateVisitorSink.java index 24a52bd,24a52bd..5b1a143 --- a/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateVisitorSink.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateVisitorSink.java @@@ -1,68 -1,68 +1,68 @@@ --/* -- * Licensed to the Apache Software Foundation (ASF) under one -- * or more contributor license agreements. See the NOTICE file -- * distributed with this work for additional information -- * regarding copyright ownership. The ASF licenses this file -- * to you under the Apache License, Version 2.0 (the -- * "License"); you may not use this file except in compliance -- * with the License. You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --package org.apache.jena.sparql.modify; -- --import org.apache.jena.sparql.core.Prologue ; --import org.apache.jena.sparql.modify.request.QuadDataAccSink ; --import org.apache.jena.sparql.modify.request.UpdateVisitor ; --import org.apache.jena.update.Update ; -- --public class UpdateVisitorSink implements UpdateSink --{ -- private final Prologue prologue; -- private final UpdateVisitor worker; -- -- public UpdateVisitorSink(UpdateVisitor worker) -- { -- this.prologue = new Prologue(); -- this.worker = worker; -- } -- -- @Override -- public Prologue getPrologue() -- { -- return prologue; -- } -- -- @Override -- public void send(Update update) -- { -- update.visit(worker); -- } -- -- @Override -- public QuadDataAccSink createInsertDataSink() -- { -- return new QuadDataAccSink(worker.createInsertDataSink()); -- } -- -- @Override -- public QuadDataAccSink createDeleteDataSink() -- { -- return new QuadDataAccSink(worker.createDeleteDataSink()); -- } -- -- @Override -- public void flush() -- { } -- -- @Override -- public void close() -- { } --} ++/* ++ * Licensed to the Apache Software Foundation (ASF) under one ++ * or more contributor license agreements. See the NOTICE file ++ * distributed with this work for additional information ++ * regarding copyright ownership. The ASF licenses this file ++ * to you under the Apache License, Version 2.0 (the ++ * "License"); you may not use this file except in compliance ++ * with the License. You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. ++ */ ++ ++package org.apache.jena.sparql.modify; ++ ++import org.apache.jena.sparql.core.Prologue ; ++import org.apache.jena.sparql.modify.request.QuadDataAccSink ; ++import org.apache.jena.sparql.modify.request.UpdateVisitor ; ++import org.apache.jena.update.Update ; ++ ++public class UpdateVisitorSink implements UpdateSink ++{ ++ private final Prologue prologue; ++ private final UpdateVisitor worker; ++ ++ public UpdateVisitorSink(UpdateVisitor worker) ++ { ++ this.prologue = new Prologue(); ++ this.worker = worker; ++ } ++ ++ @Override ++ public Prologue getPrologue() ++ { ++ return prologue; ++ } ++ ++ @Override ++ public void send(Update update) ++ { ++ update.visit(worker); ++ } ++ ++ @Override ++ public QuadDataAccSink createInsertDataSink() ++ { ++ return new QuadDataAccSink(worker.createInsertDataSink()); ++ } ++ ++ @Override ++ public QuadDataAccSink createDeleteDataSink() ++ { ++ return new QuadDataAccSink(worker.createDeleteDataSink()); ++ } ++ ++ @Override ++ public void flush() ++ { } ++ ++ @Override ++ public void close() ++ { } ++} http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-arq/src/main/java/org/apache/jena/sparql/modify/UsingList.java ---------------------------------------------------------------------- diff --cc jena-arq/src/main/java/org/apache/jena/sparql/modify/UsingList.java index c036685,c036685..05ef41d --- a/jena-arq/src/main/java/org/apache/jena/sparql/modify/UsingList.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/modify/UsingList.java @@@ -1,44 -1,44 +1,44 @@@ --/* -- * Licensed to the Apache Software Foundation (ASF) under one -- * or more contributor license agreements. See the NOTICE file -- * distributed with this work for additional information -- * regarding copyright ownership. The ASF licenses this file -- * to you under the Apache License, Version 2.0 (the -- * "License"); you may not use this file except in compliance -- * with the License. You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --package org.apache.jena.sparql.modify; -- --import java.util.ArrayList; --import java.util.Collection; --import java.util.Collections; --import java.util.List; -- --import org.apache.jena.graph.Node ; -- --public class UsingList --{ -- public UsingList() { } -- -- private List using = new ArrayList<>() ; -- private List usingNamed = new ArrayList<>() ; -- -- public void addUsing(Node node) { using.add(node) ; } -- public void addAllUsing(Collection nodes) { using.addAll(nodes); } -- public void addUsingNamed(Node node) { usingNamed.add(node) ; } -- public void addAllUsingNamed(Collection nodes) { usingNamed.addAll(nodes); } -- -- public List getUsing() { return Collections.unmodifiableList(using) ; } -- public List getUsingNamed() { return Collections.unmodifiableList(usingNamed) ; } -- -- public boolean usingIsPresent() { return using.size() > 0 || usingNamed.size() > 0 ; } --} ++/* ++ * Licensed to the Apache Software Foundation (ASF) under one ++ * or more contributor license agreements. See the NOTICE file ++ * distributed with this work for additional information ++ * regarding copyright ownership. The ASF licenses this file ++ * to you under the Apache License, Version 2.0 (the ++ * "License"); you may not use this file except in compliance ++ * with the License. You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. ++ */ ++ ++package org.apache.jena.sparql.modify; ++ ++import java.util.ArrayList; ++import java.util.Collection; ++import java.util.Collections; ++import java.util.List; ++ ++import org.apache.jena.graph.Node ; ++ ++public class UsingList ++{ ++ public UsingList() { } ++ ++ private List using = new ArrayList<>() ; ++ private List usingNamed = new ArrayList<>() ; ++ ++ public void addUsing(Node node) { using.add(node) ; } ++ public void addAllUsing(Collection nodes) { using.addAll(nodes); } ++ public void addUsingNamed(Node node) { usingNamed.add(node) ; } ++ public void addAllUsingNamed(Collection nodes) { usingNamed.addAll(nodes); } ++ ++ public List getUsing() { return Collections.unmodifiableList(using) ; } ++ public List getUsingNamed() { return Collections.unmodifiableList(usingNamed) ; } ++ ++ public boolean usingIsPresent() { return using.size() > 0 || usingNamed.size() > 0 ; } ++} http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-arq/src/main/java/org/apache/jena/sparql/modify/UsingUpdateSink.java ---------------------------------------------------------------------- diff --cc jena-arq/src/main/java/org/apache/jena/sparql/modify/UsingUpdateSink.java index 4e9d8c5,4e9d8c5..9562f1e --- a/jena-arq/src/main/java/org/apache/jena/sparql/modify/UsingUpdateSink.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/modify/UsingUpdateSink.java @@@ -1,93 -1,93 +1,93 @@@ --/* -- * Licensed to the Apache Software Foundation (ASF) under one -- * or more contributor license agreements. See the NOTICE file -- * distributed with this work for additional information -- * regarding copyright ownership. The ASF licenses this file -- * to you under the Apache License, Version 2.0 (the -- * "License"); you may not use this file except in compliance -- * with the License. You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --package org.apache.jena.sparql.modify; -- --import org.apache.jena.graph.Node ; --import org.apache.jena.sparql.core.Prologue ; --import org.apache.jena.sparql.modify.request.QuadDataAccSink ; --import org.apache.jena.sparql.modify.request.UpdateWithUsing ; --import org.apache.jena.update.Update ; --import org.apache.jena.update.UpdateException ; -- --/** -- * Adds using clauses from the UsingList to UpdateWithUsing operations; will throw an UpdateException if the modify operation already contains a using clause. -- */ --public class UsingUpdateSink implements UpdateSink --{ -- private final UpdateSink sink; -- private final UsingList usingList; -- -- public UsingUpdateSink(UpdateSink sink, UsingList usingList) -- { -- this.sink = sink; -- this.usingList = usingList; -- } -- -- @Override -- public void send(Update update) -- { -- // ---- check USING/USING NAMED/WITH not used. -- // ---- update request to have USING/USING NAMED -- if ( null != usingList && usingList.usingIsPresent() ) -- { -- if ( update instanceof UpdateWithUsing ) -- { -- UpdateWithUsing upu = (UpdateWithUsing)update ; -- if ( upu.getUsing().size() != 0 || upu.getUsingNamed().size() != 0 || upu.getWithIRI() != null ) -- throw new UpdateException("SPARQL Update: Protocol using-graph-uri or using-named-graph-uri present where update request has USING, USING NAMED or WITH") ; -- for ( Node node : usingList.getUsing() ) -- upu.addUsing(node) ; -- for ( Node node : usingList.getUsingNamed() ) -- upu.addUsingNamed(node) ; -- } -- } -- -- sink.send(update); -- } -- -- @Override -- public QuadDataAccSink createInsertDataSink() -- { -- return sink.createInsertDataSink(); -- } -- -- @Override -- public QuadDataAccSink createDeleteDataSink() -- { -- return sink.createDeleteDataSink(); -- } -- -- @Override -- public void flush() -- { -- sink.flush(); -- } -- -- @Override -- public void close() -- { -- sink.close(); -- } -- -- @Override -- public Prologue getPrologue() -- { -- return sink.getPrologue(); -- } --} ++/* ++ * Licensed to the Apache Software Foundation (ASF) under one ++ * or more contributor license agreements. See the NOTICE file ++ * distributed with this work for additional information ++ * regarding copyright ownership. The ASF licenses this file ++ * to you under the Apache License, Version 2.0 (the ++ * "License"); you may not use this file except in compliance ++ * with the License. You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. ++ */ ++ ++package org.apache.jena.sparql.modify; ++ ++import org.apache.jena.graph.Node ; ++import org.apache.jena.sparql.core.Prologue ; ++import org.apache.jena.sparql.modify.request.QuadDataAccSink ; ++import org.apache.jena.sparql.modify.request.UpdateWithUsing ; ++import org.apache.jena.update.Update ; ++import org.apache.jena.update.UpdateException ; ++ ++/** ++ * Adds using clauses from the UsingList to UpdateWithUsing operations; will throw an UpdateException if the modify operation already contains a using clause. ++ */ ++public class UsingUpdateSink implements UpdateSink ++{ ++ private final UpdateSink sink; ++ private final UsingList usingList; ++ ++ public UsingUpdateSink(UpdateSink sink, UsingList usingList) ++ { ++ this.sink = sink; ++ this.usingList = usingList; ++ } ++ ++ @Override ++ public void send(Update update) ++ { ++ // ---- check USING/USING NAMED/WITH not used. ++ // ---- update request to have USING/USING NAMED ++ if ( null != usingList && usingList.usingIsPresent() ) ++ { ++ if ( update instanceof UpdateWithUsing ) ++ { ++ UpdateWithUsing upu = (UpdateWithUsing)update ; ++ if ( upu.getUsing().size() != 0 || upu.getUsingNamed().size() != 0 || upu.getWithIRI() != null ) ++ throw new UpdateException("SPARQL Update: Protocol using-graph-uri or using-named-graph-uri present where update request has USING, USING NAMED or WITH") ; ++ for ( Node node : usingList.getUsing() ) ++ upu.addUsing(node) ; ++ for ( Node node : usingList.getUsingNamed() ) ++ upu.addUsingNamed(node) ; ++ } ++ } ++ ++ sink.send(update); ++ } ++ ++ @Override ++ public QuadDataAccSink createInsertDataSink() ++ { ++ return sink.createInsertDataSink(); ++ } ++ ++ @Override ++ public QuadDataAccSink createDeleteDataSink() ++ { ++ return sink.createDeleteDataSink(); ++ } ++ ++ @Override ++ public void flush() ++ { ++ sink.flush(); ++ } ++ ++ @Override ++ public void close() ++ { ++ sink.close(); ++ } ++ ++ @Override ++ public Prologue getPrologue() ++ { ++ return sink.getPrologue(); ++ } ++} http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-arq/src/main/java/org/apache/jena/sparql/modify/request/UpdateDataWriter.java ---------------------------------------------------------------------- diff --cc jena-arq/src/main/java/org/apache/jena/sparql/modify/request/UpdateDataWriter.java index 379b5ca,379b5ca..99a6119 --- a/jena-arq/src/main/java/org/apache/jena/sparql/modify/request/UpdateDataWriter.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/modify/request/UpdateDataWriter.java @@@ -1,57 -1,57 +1,57 @@@ --/* -- * Licensed to the Apache Software Foundation (ASF) under one -- * or more contributor license agreements. See the NOTICE file -- * distributed with this work for additional information -- * regarding copyright ownership. The ASF licenses this file -- * to you under the Apache License, Version 2.0 (the -- * "License"); you may not use this file except in compliance -- * with the License. You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --package org.apache.jena.sparql.modify.request; -- --import org.apache.jena.atlas.io.IndentedWriter ; --import org.apache.jena.riot.out.SinkQuadBracedOutput ; --import org.apache.jena.sparql.serializer.SerializationContext ; -- --public class UpdateDataWriter extends SinkQuadBracedOutput --{ -- /** -- * The mode an UpdateDataWriter is in. -- */ -- public enum UpdateMode -- { -- INSERT, -- DELETE, -- } -- -- private final UpdateMode mode; -- -- public UpdateDataWriter(UpdateMode mode, IndentedWriter out, SerializationContext sCxt) -- { -- super(out, sCxt); -- this.mode = mode; -- } -- -- public UpdateMode getMode() -- { -- return mode; -- } -- -- @Override -- public void open() -- { -- out.ensureStartOfLine(); -- out.print(mode.toString()); -- out.print(" DATA "); -- super.open(); -- } --} ++/* ++ * Licensed to the Apache Software Foundation (ASF) under one ++ * or more contributor license agreements. See the NOTICE file ++ * distributed with this work for additional information ++ * regarding copyright ownership. The ASF licenses this file ++ * to you under the Apache License, Version 2.0 (the ++ * "License"); you may not use this file except in compliance ++ * with the License. You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. ++ */ ++ ++package org.apache.jena.sparql.modify.request; ++ ++import org.apache.jena.atlas.io.IndentedWriter ; ++import org.apache.jena.riot.out.SinkQuadBracedOutput ; ++import org.apache.jena.sparql.serializer.SerializationContext ; ++ ++public class UpdateDataWriter extends SinkQuadBracedOutput ++{ ++ /** ++ * The mode an UpdateDataWriter is in. ++ */ ++ public enum UpdateMode ++ { ++ INSERT, ++ DELETE, ++ } ++ ++ private final UpdateMode mode; ++ ++ public UpdateDataWriter(UpdateMode mode, IndentedWriter out, SerializationContext sCxt) ++ { ++ super(out, sCxt); ++ this.mode = mode; ++ } ++ ++ public UpdateMode getMode() ++ { ++ return mode; ++ } ++ ++ @Override ++ public void open() ++ { ++ out.ensureStartOfLine(); ++ out.print(mode.toString()); ++ out.print(" DATA "); ++ super.open(); ++ } ++} http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-arq/src/main/java/org/apache/jena/web/DatasetGraphAccessor.java ---------------------------------------------------------------------- diff --cc jena-arq/src/main/java/org/apache/jena/web/DatasetGraphAccessor.java index c027318,c027318..74cbf4e --- a/jena-arq/src/main/java/org/apache/jena/web/DatasetGraphAccessor.java +++ b/jena-arq/src/main/java/org/apache/jena/web/DatasetGraphAccessor.java @@@ -16,32 -16,32 +16,32 @@@ * limitations under the License. */ --package org.apache.jena.web; -- ++package org.apache.jena.web; ++ import org.apache.jena.graph.Graph ; import org.apache.jena.graph.Node ; -- --public interface DatasetGraphAccessor --{ -- public Graph httpGet() ; -- public Graph httpGet(Node graphName) ; -- -- public boolean httpHead() ; -- public boolean httpHead(Node graphName) ; -- -- // Replace/create graph -- public void httpPut(Graph data) ; -- public void httpPut(Node graphName, Graph data) ; -- -- // Remove graph -- public void httpDelete() ; -- public void httpDelete(Node graphName) ; -- -- // Update graph -- public void httpPost(Graph data) ; -- public void httpPost(Node graphName, Graph data) ; -- -- // Update graph -- public void httpPatch(Graph data) ; -- public void httpPatch(Node graphName, Graph data) ; ++ ++public interface DatasetGraphAccessor ++{ ++ public Graph httpGet() ; ++ public Graph httpGet(Node graphName) ; ++ ++ public boolean httpHead() ; ++ public boolean httpHead(Node graphName) ; ++ ++ // Replace/create graph ++ public void httpPut(Graph data) ; ++ public void httpPut(Node graphName, Graph data) ; ++ ++ // Remove graph ++ public void httpDelete() ; ++ public void httpDelete(Node graphName) ; ++ ++ // Update graph ++ public void httpPost(Graph data) ; ++ public void httpPost(Node graphName, Graph data) ; ++ ++ // Update graph ++ public void httpPatch(Graph data) ; ++ public void httpPatch(Node graphName, Graph data) ; } http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-arq/src/main/java/org/apache/jena/web/DatasetGraphAccessorBasic.java ---------------------------------------------------------------------- diff --cc jena-arq/src/main/java/org/apache/jena/web/DatasetGraphAccessorBasic.java index ecba83e,ecba83e..2acf277 --- a/jena-arq/src/main/java/org/apache/jena/web/DatasetGraphAccessorBasic.java +++ b/jena-arq/src/main/java/org/apache/jena/web/DatasetGraphAccessorBasic.java @@@ -16,39 -16,39 +16,39 @@@ * limitations under the License. */ --package org.apache.jena.web; -- -- ++package org.apache.jena.web; ++ ++ import org.apache.jena.graph.Graph ; import org.apache.jena.graph.GraphUtil ; import org.apache.jena.graph.Node ; import org.apache.jena.sparql.core.DatasetGraph ; -- --/** -- * General implementation of operations for the SPARQL HTTP Update protocol -- * over a DatasetGraph. -- */ --public class DatasetGraphAccessorBasic implements DatasetGraphAccessor --{ -- private DatasetGraph dataset ; -- -- public DatasetGraphAccessorBasic(DatasetGraph dataset) -- { -- this.dataset = dataset ; -- } -- -- @Override -- public Graph httpGet() { return dataset.getDefaultGraph() ; } -- -- @Override -- public Graph httpGet(Node graphName) { return dataset.getGraph(graphName) ; } -- -- @Override -- public boolean httpHead() { return true ; } -- -- @Override -- public boolean httpHead(Node graphName) { return dataset.containsGraph(graphName) ; } -- ++ ++/** ++ * General implementation of operations for the SPARQL HTTP Update protocol ++ * over a DatasetGraph. ++ */ ++public class DatasetGraphAccessorBasic implements DatasetGraphAccessor ++{ ++ private DatasetGraph dataset ; ++ ++ public DatasetGraphAccessorBasic(DatasetGraph dataset) ++ { ++ this.dataset = dataset ; ++ } ++ ++ @Override ++ public Graph httpGet() { return dataset.getDefaultGraph() ; } ++ ++ @Override ++ public Graph httpGet(Node graphName) { return dataset.getGraph(graphName) ; } ++ ++ @Override ++ public boolean httpHead() { return true ; } ++ ++ @Override ++ public boolean httpHead(Node graphName) { return dataset.containsGraph(graphName) ; } ++ @Override public void httpPut(Graph data) { putGraph(dataset.getDefaultGraph(), data) ; @@@ -91,13 -91,13 +91,13 @@@ } mergeGraph(ng, data) ; } -- -- @Override -- public void httpPatch(Graph data) { httpPost(data) ; } -- -- @Override -- public void httpPatch(Node graphName, Graph data) { httpPost(graphName, data) ;} -- ++ ++ @Override ++ public void httpPatch(Graph data) { httpPost(data) ; } ++ ++ @Override ++ public void httpPatch(Node graphName, Graph data) { httpPost(graphName, data) ;} ++ private void putGraph(Graph destGraph, Graph data) { clearGraph(destGraph) ; mergeGraph(destGraph, data) ; @@@ -110,6 -110,6 +110,6 @@@ private void mergeGraph(Graph graph, Graph data) { GraphUtil.addInto(graph, data) ; -- } -- ++ } ++ } http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-arq/src/test/java/org/apache/jena/query/TS_ParamString.java ---------------------------------------------------------------------- diff --cc jena-arq/src/test/java/org/apache/jena/query/TS_ParamString.java index bba2a1a,bba2a1a..866d066 --- a/jena-arq/src/test/java/org/apache/jena/query/TS_ParamString.java +++ b/jena-arq/src/test/java/org/apache/jena/query/TS_ParamString.java @@@ -1,31 -1,31 +1,31 @@@ --/** -- * Licensed to the Apache Software Foundation (ASF) under one -- * or more contributor license agreements. See the NOTICE file -- * distributed with this work for additional information -- * regarding copyright ownership. The ASF licenses this file -- * to you under the Apache License, Version 2.0 (the -- * "License"); you may not use this file except in compliance -- * with the License. You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --package org.apache.jena.query; -- --import org.junit.runner.RunWith ; --import org.junit.runners.Suite ; -- --@RunWith(Suite.class) --@Suite.SuiteClasses( { -- TestParameterizedSparqlString.class --}) -- --public class TS_ParamString --{ } -- ++/** ++ * Licensed to the Apache Software Foundation (ASF) under one ++ * or more contributor license agreements. See the NOTICE file ++ * distributed with this work for additional information ++ * regarding copyright ownership. The ASF licenses this file ++ * to you under the Apache License, Version 2.0 (the ++ * "License"); you may not use this file except in compliance ++ * with the License. You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. ++ */ ++ ++package org.apache.jena.query; ++ ++import org.junit.runner.RunWith ; ++import org.junit.runners.Suite ; ++ ++@RunWith(Suite.class) ++@Suite.SuiteClasses( { ++ TestParameterizedSparqlString.class ++}) ++ ++public class TS_ParamString ++{ } ++