anchor.diff:        for (p, o) in px -> (s, p, o)
       }
   
  -  //Applies f to the object component of statement
     let mapObject f (O o) = f o
  -  //Applies f to the object component of all resources
  +
     let mapO f = List.map (mapObject f)
   
  -  let id (R(S(Uri u),_)) = u
  -  //Traverses object properties
  +  let id (R(S s,_)) = s
  +
     let traverse xo =
       [ for o in xo do
           match o with
  
positive.code: 
    let (|Property|_|) p (R(_, xs)) =
      xs
      |> Seq.filter (fun ((P(Uri p')), _) -> p = p')
      |> Seq.map (fun (_, o) -> o)
      |> Seq.toList
      |> noneIfEmpty
  
    let (|FunctionalProperty|_|) p (R(_, xs)) =
      xs
      |> Seq.filter (fun ((P(Uri p')), _) -> p = p')
      |> Seq.map (fun (_, o) -> o)
      |> Seq.toList
      |> (function
  
negative.code:     | _ -> false
  
  type Subject =
    | S of Uri
    static member from c = S(Uri.Curie c)
    static member from (u : string) = S(Uri.from u)
  
  type Predicate =
    | P of Uri
    static member from c = P(Uri.Curie c)
    static member from u = P(Uri.Sys u)
    static member from u = P(Uri.Sys(System.Uri u))
  
  type Object =
    | O of Node
  