示例#1
0
        /// <summary>Outputs the RDF dataset found in the given JSON-LD object.</summary>
        /// <remarks>Outputs the RDF dataset found in the given JSON-LD object.</remarks>
        /// <param name="input">the JSON-LD input.</param>
        /// <param name="callback">
        /// A callback that is called when the input has been converted to
        /// Quads (null to use options.format instead).
        /// </param>
        /// <?></?>
        /// <param name="callback">(err, dataset) called once the operation completes.</param>
        /// <exception cref="JsonLDNet.Core.JsonLdError"></exception>
        public static object ToRDF(JToken input, IJSONLDTripleCallback callback, JsonLdOptions
                                   options)
        {
            JToken     expandedInput = Expand(input, options);
            JsonLdApi  api           = new JsonLdApi(expandedInput, options);
            RDFDataset dataset       = api.ToRDF();

            // generate namespaces from context
            if (options.useNamespaces)
            {
                JArray _input;
                if (input is JArray)
                {
                    _input = (JArray)input;
                }
                else
                {
                    _input = new JArray();
                    _input.Add((JObject)input);
                }
                foreach (JToken e in _input)
                {
                    if (((JObject)e).ContainsKey("@context"))
                    {
                        dataset.ParseContext((JObject)e["@context"]);
                    }
                }
            }
            if (callback != null)
            {
                return(callback.Call(dataset));
            }
            if (options.format != null)
            {
                if ("application/nquads".Equals(options.format))
                {
                    return(new NQuadTripleCallback().Call(dataset));
                }
                else
                {
                    if ("text/turtle".Equals(options.format))
                    {
                        return(new TurtleTripleCallback().Call(dataset));
                    }
                    else
                    {
                        throw new JsonLdError(JsonLdError.Error.UnknownFormat, options.format);
                    }
                }
            }
            return(dataset);
        }
示例#2
0
 /// <exception cref="JsonLD.Core.JsonLdError"></exception>
 public static object ToRDF(JToken input, IJSONLDTripleCallback callback)
 {
     return(ToRDF(input, callback, new JsonLdOptions(string.Empty)));
 }