Unfortunately, Andy, e.g. the Javadocs for DatasetGraph::delete and ::deleteAny
are just
/** Delete a quad */
public void delete(Node g, Node s, Node p, Node o) ;
/** Delete any quads matching the pattern */
public void deleteAny(Node g, Node s, Node p, Node o) ;
So maybe part of this clears up with just a few more comments. I'll try to get
a PR in for that.
The semantics for matching still seem a bit odd. E.g. in Node_ANY I find
@Override
public boolean matches( Node other )
{ return other != null; }
which is obviously not unworkable (we all use it every day) but does seem to
distinguish between null and Node_ANY. The Javadocs for match() are:
/**
Answer true iff this node accepts the other one as a match.
The default is an equality test; it is over-ridden in subclasses to
provide the appropriate semantics for literals, ANY, and variables.
@param other a node to test for matching
@return true iff this node accepts the other as a match
*/
which doesn't discuss null.
ajs6f
> On May 9, 2018, at 8:23 AM, Andy Seaborne <[email protected]> wrote:
>
>
>
> On 08/05/18 16:55, ajs6f wrote:
>
>> Do we have a global policy about where null is accepted as a wildcard? I
>> know it works in at least some places...
>
> > I know it works in at least some places...
>
> Some operations are matches (Graph.find, Graph.contains, Graph.remove;
> DatasetGraph similarly) and the javadoc should be clear on this.
>
> Others such as add/delete are for concrete items - no wildcards.
>
> Andy
>