anchor.diff:      end;
   get_category_uri(Category, Context) ->
       get_category_uri(lists:reverse(m_category:is_a(Category, Context)), Context).
  +
  +to_json_ld(Id, Context) ->
  +    mochijson2:encode(ginger_json_ld:serialize(to_triples(Id, Context))).
  
positive.code: 
  %% @doc Fetch a RDF resource
  rsc(Uri, Context) ->
      z_depcache:memo(
          fun() ->
              z_notifier:foldl(#rdf_get{uri = Uri}, #rdf_resource{}, Context)
          end,
          #rdf_resource{id = Uri},
          ?WEEK,
  
negative.code: 
  % Assume integer input is a RscId
  m_find_value(RscId, #m{value = undefined} = M, Context) when is_integer(RscId) ->
      case m_rsc:p(RscId, is_authoritative, Context) of
          true ->
              %% Authoritative resource, so base RDF representation on internal data.
              to_json_ld(RscId, Context);
          false ->
              %% Non-authoritative resource, so base representation on external data.
              Uri = m_rsc:p_no_acl(RscId, uri, Context),
              m_find_value(Uri, M, Context)
      end;
  
  % Assume other input is an Uri we need to lookup
  m_find_value(undefined, #m{value = undefined}, _Context) ->
      undefined;
  m_find_value(Uri, #m{value = undefined} = M, Context) ->
      M#m{value = rsc(Uri, Context)};
  
  