anchor.diff:  
     let triplesToStatement (t : VDS.RDF.Triple seq) =
       t
  -    |> Seq.groupBy (fun t -> t.Subject)
  +    |> Seq.groupBy (fun t -> t.Subject :?> IUriNode)
       |> Seq.map
            (fun (s, tx) ->
  -         R((S(Node.from s)),
  -           [ for t in tx -> (P(Node.from t.Predicate), O(Node.from t.Object)) ]))
  +         R((S(VDS s)),
  +           [ for t in tx -> (P(VDS ( t.Predicate :?> IUriNode )), O(Node.from t.Object)) ]))
       |> Seq.toList
   
     let fromSingle (f : Uri -> IGraph -> VDS.RDF.Triple seq) x (Graph g) =
  
positive.code:     | _ -> false
  
  type Subject =
    | S of Node
    static member from c = S(Node.Uri(Uri.Curie c))
    static member from (u : string) = S(Node.from u)
  
  type Predicate =
    | P of Node
    static member from c = P(Node.Uri(Uri.Curie c))
    static member from u = P(Node.Uri(Uri.Sys u))
    static member from u = P(Node.Uri(Uri.Sys(System.Uri u)))
  
  type Object =
    | O of Node
  
negative.code:       for (p, o) in px -> (s, p, o)
      }
  
    let mapObject f (O o) = f o
  
    let mapO f = List.map (mapObject f)
  
    let id (R(S s,_)) = s
  
    let traverse xo =
      [ for o in xo do
          match o with
  