You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jena.apache.org by Paul Tyson <ph...@sbcglobal.net> on 2019/12/05 15:12:26 UTC

programmatically construct UpdateDeleteInsert

I'm trying to construct a SPARQL update like:

DELETE {?r ?p ?o. ?s ?p1 ?r.}
WHERE {?r ex:foo "123"; ex:bar "456"; ?p ?o.
  OPTIONAL {?s ?p1 ?r}
}

In other words, delete all triples with subject or object resource that
has certain ex:foo and ex:bar values.

I can't see how to set or modify the DELETE pattern in an UpdateModify
(or UpdateDeleteInsert) object. I'm guessing a visitor must be used,
but I can't put the pieces together. Can someone point out the right
pattern?

UpdateModify upd = new UpdateModify();
upd.setHasDeleteClause(true);
upd.setHasInsertClause(false);
upd.setElement(/* set the where block */);
upd.visit(new UpdateVisitorBase() {
  @Override
  public void visit(UpdateModify um) {
    /* somehow add the DELETE triples??? */
  }
 });

I intend to use the built-up request in an UpdateRequest to be
submitted  by an RDFConnection, like:

UpdateRequest req = UpdateFactory.create().add(upd);
rdfConnection.update(req);

I'm using jena libs 3.13.1.

Thanks and regards,
--Paul



Re: programmatically construct UpdateDeleteInsert

Posted by Claude Warren <cl...@xenei.com>.
FYI  QueryBuilder framework has methods to programmatically build Update
requests as well as queries?



On Thu, Dec 5, 2019 at 4:25 PM Paul Tyson <ph...@sbcglobal.net> wrote:

> Never mind. I missed:
>
> QuadAcc deletes = upd.getDeleteAcc();
> deletes.addTriple(/* triple pattern to delete */);
>
> Regards,
> --Paul
>
>
> On Thu, 2019-12-05 at 09:12 -0600, Paul Tyson wrote:
> > I'm trying to construct a SPARQL update like:
> >
> > DELETE {?r ?p ?o. ?s ?p1 ?r.}
> > WHERE {?r ex:foo "123"; ex:bar "456"; ?p ?o.
> >   OPTIONAL {?s ?p1 ?r}
> > }
> >
> > In other words, delete all triples with subject or object resource that
> > has certain ex:foo and ex:bar values.
> >
> > I can't see how to set or modify the DELETE pattern in an UpdateModify
> > (or UpdateDeleteInsert) object. I'm guessing a visitor must be used,
> > but I can't put the pieces together. Can someone point out the right
> > pattern?
> >
> > UpdateModify upd = new UpdateModify();
> > upd.setHasDeleteClause(true);
> > upd.setHasInsertClause(false);
> > upd.setElement(/* set the where block */);
> > upd.visit(new UpdateVisitorBase() {
> >   @Override
> >   public void visit(UpdateModify um) {
> >     /* somehow add the DELETE triples??? */
> >   }
> >  });
> >
> > I intend to use the built-up request in an UpdateRequest to be
> > submitted  by an RDFConnection, like:
> >
> > UpdateRequest req = UpdateFactory.create().add(upd);
> > rdfConnection.update(req);
> >
> > I'm using jena libs 3.13.1.
> >
> > Thanks and regards,
> > --Paul
> >
> >
>
>
>

-- 
I like: Like Like - The likeliest place on the web
<http://like-like.xenei.com>
LinkedIn: http://www.linkedin.com/in/claudewarren

Re: programmatically construct UpdateDeleteInsert

Posted by Paul Tyson <ph...@sbcglobal.net>.
Never mind. I missed:

QuadAcc deletes = upd.getDeleteAcc();
deletes.addTriple(/* triple pattern to delete */);

Regards,
--Paul


On Thu, 2019-12-05 at 09:12 -0600, Paul Tyson wrote:
> I'm trying to construct a SPARQL update like:
> 
> DELETE {?r ?p ?o. ?s ?p1 ?r.}
> WHERE {?r ex:foo "123"; ex:bar "456"; ?p ?o.
>   OPTIONAL {?s ?p1 ?r}
> }
> 
> In other words, delete all triples with subject or object resource that
> has certain ex:foo and ex:bar values.
> 
> I can't see how to set or modify the DELETE pattern in an UpdateModify
> (or UpdateDeleteInsert) object. I'm guessing a visitor must be used,
> but I can't put the pieces together. Can someone point out the right
> pattern?
> 
> UpdateModify upd = new UpdateModify();
> upd.setHasDeleteClause(true);
> upd.setHasInsertClause(false);
> upd.setElement(/* set the where block */);
> upd.visit(new UpdateVisitorBase() {
>   @Override
>   public void visit(UpdateModify um) {
>     /* somehow add the DELETE triples??? */
>   }
>  });
> 
> I intend to use the built-up request in an UpdateRequest to be
> submitted  by an RDFConnection, like:
> 
> UpdateRequest req = UpdateFactory.create().add(upd);
> rdfConnection.update(req);
> 
> I'm using jena libs 3.13.1.
> 
> Thanks and regards,
> --Paul
> 
>