anchor.diff:      Object;
   list(Object) ->
       [Object].
  -    
  +
   %% @doc Construct a #triple{} record.
   -spec triple(binary(), binary(), binary()) -> #triple{}.
   triple(Subject, Predicate, <<"http://", _/binary>> = Object) ->
  
positive.code:     case binary:split(Predicate, <<":">>) of
          [Namespace, Property] ->
              %% Predicate with namespace, e.g, "dcterms:date"
              case resolve_namespace(Namespace, Context) of
                  undefined ->
                      lager:error("Namespace ~p not registered", [Namespace]),
                      undefined;
                  ResolvedNamespace ->
                      erlang:iolist_to_binary([ResolvedNamespace, Property])
              end;
          [Property] ->
              %% Special property without namespace, e.g., "@type"
              Property
      end.
  
  %% @doc Resolve a namespace based on the @context value
  -spec resolve_namespace(binary(), list()) -> binary().
  resolve_namespace(Namespace, Context) when is_map(Context) ->
      maps:get(Namespace, Context, undefined);
  resolve_namespace(Namespace, Context) ->
      proplists:get_value(Namespace, Context).
  
  create_triple_from_json(Subject, Predicate, Object, Context) ->
  
negative.code:                 TripleJson ->
                      JsonKey = hd(maps:keys(TripleJson)),
                      #{JsonKey := JsonValue} = TripleJson,
  
                      case maps:get(JsonKey, Acc, undefined) of
                          undefined ->
                              maps:merge(Acc, TripleJson);
  