Beispiel #1
0
        static void Test0()
        {
            IGraph g = new Graph();

            TurtleParser parser = new TurtleParser();

            parser.Load(g, "datatypes.test.ttl");

            StringWriter stringWriter = new StringWriter();

            JToken frame;

            using (JsonReader reader = new JsonTextReader(new StreamReader("datatypes.context.json")))
            {
                frame = JToken.Load(reader);
            }

            JsonLdWriter jsonLdWriter = new JsonLdWriter();

            jsonLdWriter.Frame = frame;
            jsonLdWriter.Save(g, stringWriter);

            JToken compacted = JToken.Parse(stringWriter.ToString());

            Console.WriteLine(compacted);
        }
        public string GetFormattedOutput(ref Graph graph, string outputFormat)
        {
            var writer = new System.IO.StringWriter();

            if (outputFormat == "jsonLd")
            {
                var jsonLdWriter = new JsonLdWriter();
                var store        = new TripleStore();
                store.Add(graph);
                jsonLdWriter.Save(store, writer);
            }
            else
            {
                dynamic formattedWriter = new CompressingTurtleWriter();
                if (outputFormat == "rdf/xml")
                {
                    formattedWriter = new RdfXmlWriter();
                }
                else if (outputFormat == "n triples")
                {
                    formattedWriter = new NTriplesWriter();
                }
                formattedWriter.Save(graph, writer);
            }
            return(writer.ToString());
        }
        /*
         * public static bool SaveGraph(Tuple<IGraph, string, string> graph, string connectionString)
         * {
         *  StringBuilder sb = new StringBuilder();
         *  using (System.IO.TextWriter writer = new System.IO.StringWriter(sb))
         *  {
         *      RdfJsonWriter jsonWriter = new RdfJsonWriter();
         *      jsonWriter.PrettyPrintMode = true;
         *      jsonWriter.Save(graph.Item1, writer);
         *  }
         *
         *  MemoryStream stream = new MemoryStream();
         *  using (StreamWriter writer = new StreamWriter(stream))
         *  {
         *      writer.Write(sb.ToString());
         *      writer.Flush();
         *
         *      stream.Seek(0, SeekOrigin.Begin);
         *      Publish(stream, graph.Item3, "application/json", connectionString);
         *  }
         *
         *  return true;
         * }
         */

        public static bool SaveGraph(Tuple <IGraph, string, string> graph, string connectionString, string publishContainer)
        {
            JToken frame;

            using (JsonReader jsonReader = new JsonTextReader(new StreamReader(graph.Item2)))
            {
                frame = JToken.Load(jsonReader);
            }

            MemoryStream stream = new MemoryStream();

            using (StreamWriter writer = new StreamWriter(stream))
            {
                IRdfWriter rdfWriter = new JsonLdWriter {
                    Frame = frame
                };
                rdfWriter.Save(graph.Item1, writer);

                writer.Flush();

                stream.Seek(0, SeekOrigin.Begin);
                Publish(stream, graph.Item3, "application/json", connectionString, publishContainer);
            }

            return(true);
        }
#pragma warning disable xUnit1026 // Theory methods should use all of their parameters
        public void JsonLdWriterTests(string inputPath, string contextPath, string expectedOutputPath, bool useNativeTypes, bool useRdfType)
#pragma warning restore xUnit1026 // Theory methods should use all of their parameters
        {
            var nqParser = new NQuadsParser(NQuadsSyntax.Rdf11);
            var input    = new TripleStore();

            nqParser.Load(input, inputPath);
            FixStringLiterals(input);
            var expectedOutputJson = File.ReadAllText(expectedOutputPath);
            var expectedOutput     = JToken.Parse(expectedOutputJson);
            var jsonLdWriter       =
                new JsonLdWriter(new JsonLdWriterOptions {
                UseNativeTypes = useNativeTypes, UseRdfType = useRdfType
            });
            var actualOutput = jsonLdWriter.SerializeStore(input);

            try
            {
                Assert.True(DeepEquals(expectedOutput, actualOutput, true, true),
                            $"Test failed for input {Path.GetFileName(inputPath)}\nExpected:\n{expectedOutput}\nActual:\n{actualOutput}");
            }
            catch (DeepEqualityFailure ex)
            {
                Assert.True(false,
                            $"Test failed for input {Path.GetFileName(inputPath)}\nExpected:\n{expectedOutput}\nActual:\n{actualOutput}\nMatch Failured: {ex}");
            }
        }
Beispiel #5
0
        private static IRdfWriter CreateWriter(string mediaType)
        {
            IRdfWriter result;

            switch (mediaType)
            {
            case TextTurtle:
                result = new CompressingTurtleWriter();
                break;

            case ApplicationRdfXml:
            case ApplicationOwlXml:
                result = new RdfXmlWriter();
                break;

            case ApplicationLdJson:
                result = new JsonLdWriter(Context);
                break;

            default:
                throw new InvalidOperationException(String.Format("Media type '{0}' is not supported.", mediaType));
            }

            if (!(result is INamespaceWriter))
            {
                return(result);
            }

            var namespaceWriter = (INamespaceWriter)result;

            namespaceWriter.DefaultNamespaces.AddNamespace("owl", new Uri(Owl.BaseUri));
            namespaceWriter.DefaultNamespaces.AddNamespace("hydra", Hydra);
            namespaceWriter.DefaultNamespaces.AddNamespace("ursa", DescriptionController <IController> .VocabularyBaseUri);
            return(result);
        }
Beispiel #6
0
        public static JToken JsonFromGraph2(IGraph graph, string rootType, JToken context)
        {
            System.IO.StringWriter stringWriter = new System.IO.StringWriter();
            IRdfWriter             rdfWriter    = new JsonLdWriter();

            rdfWriter.Save(graph, stringWriter);
            stringWriter.Flush();

            JToken flattened = JToken.Parse(stringWriter.ToString());

            return(flattened);
        }
Beispiel #7
0
        internal static async Task<Stream> AsStream<TEntity>(this TEntity entity) where TEntity : IResource
        {
            var result = new MemoryStream();
            var serializer = new JsonLdWriter();
            using (var writer = new StreamWriter(result, Encoding.UTF8, 4096, true))
            {
                var graphs =
                    from statement in await entity.Context.EntitySource.Load(entity.Iri)
                    group statement by statement.Graph into graphStatements
                    select new Graph(graphStatements.Key, graphStatements);
                await serializer.Write(writer, graphs);
            }

            result.Seek(0, SeekOrigin.Begin);
            return result;
        }
Beispiel #8
0
        public static void Save(IGraph graph, JToken frame, string connectionString, string container, string name)
        {
            MemoryStream stream = new MemoryStream();

            using (StreamWriter writer = new StreamWriter(stream))
            {
                IRdfWriter rdfWriter = new JsonLdWriter {
                    Frame = frame
                };
                rdfWriter.Save(graph, writer);

                writer.Flush();

                stream.Seek(0, SeekOrigin.Begin);
                Utils.Publish(stream, name, "application/json", connectionString, container);
            }
        }
Beispiel #9
0
        static JToken ApplyFrame(IGraph g, string frameName)
        {
            JToken frame;

            using (JsonReader reader = new JsonTextReader(new StreamReader(frameName)))
            {
                frame = JToken.Load(reader);
            }

            StringWriter stringWriter = new StringWriter();

            JsonLdWriter jsonLdWriter = new JsonLdWriter();

            jsonLdWriter.Frame = frame;
            jsonLdWriter.Save(g, stringWriter);

            return(JToken.Parse(stringWriter.ToString()));
        }
Beispiel #10
0
        public static JObject JsonFromGraph(IGraph graph, string rootType, JToken context)
        {
            System.IO.StringWriter stringWriter = new System.IO.StringWriter();
            IRdfWriter             rdfWriter    = new JsonLdWriter();

            rdfWriter.Save(graph, stringWriter);
            stringWriter.Flush();

            JObject frame = new JObject();

            frame.Add("@context", context);
            frame.Add("@type", rootType);
            //frame.Add("@embed", false);

            JToken  flattened = JToken.Parse(stringWriter.ToString());
            JObject framed    = JsonLdProcessor.Frame(flattened, frame, new JsonLdOptions());
            JObject compacted = JsonLdProcessor.Compact(framed, context, new JsonLdOptions());

            return(compacted);
        }
        public static string CreateJson(IGraph graph, JToken frame = null)
        {
            System.IO.StringWriter writer    = new System.IO.StringWriter();
            IRdfWriter             rdfWriter = new JsonLdWriter();

            rdfWriter.Save(graph, writer);
            writer.Flush();

            if (frame == null)
            {
                return(writer.ToString());
            }
            else
            {
                JToken  flattened = JToken.Parse(writer.ToString());
                JObject framed    = JsonLdProcessor.Frame(flattened, frame, new JsonLdOptions());
                JObject compacted = JsonLdProcessor.Compact(framed, frame["@context"], new JsonLdOptions());

                return(compacted.ToString());
            }
        }
        public static JToken FromRdf(IEnumerable <string> statements)
        {
            var stringBuilder = new StringBuilder();

            foreach (var item in statements)
            {
                stringBuilder.AppendLine(item);
            }
            var reader = new StringReader(stringBuilder.ToString());

            var store  = new TripleStore();
            var parser = new NQuadsParser(NQuadsSyntax.Rdf11);

            parser.Load(store, reader);

            var ldWriter     = new JsonLdWriter();
            var stringWriter = new System.IO.StringWriter();

            ldWriter.Save(store, stringWriter);

            return(JToken.Parse(stringWriter.ToString()));
        }
        static void Test0()
        {
            Console.WriteLine("JsonLDIntegrationTests.Test0");

            IGraph g = new Graph();

            TurtleParser parser = new TurtleParser();
            parser.Load(g, "datatypes.test.ttl");

            System.IO.StringWriter stringWriter = new System.IO.StringWriter();

            JToken frame;
            using (JsonReader reader = new JsonTextReader(new StreamReader("datatypes.context.json")))
            {
                frame = JToken.Load(reader);
            }

            JsonLdWriter jsonLdWriter = new JsonLdWriter();
            jsonLdWriter.Save(g, stringWriter);

            JToken flattened = JToken.Parse(stringWriter.ToString());

            JObject framed = JsonLdProcessor.Frame(flattened, frame, new JsonLdOptions());
            JObject compacted = JsonLdProcessor.Compact(framed, framed["@context"], new JsonLdOptions());

            Console.WriteLine(compacted);

            JToken flattened2 = JsonLdProcessor.Flatten(compacted, new JsonLdOptions());

            IGraph g2 = new Graph();
            JsonLdReader jsonLdReader = new JsonLdReader();
            jsonLdReader.Load(g2, new StringReader(flattened2.ToString()));

            CompressingTurtleWriter turtleWriter = new CompressingTurtleWriter();

            turtleWriter.DefaultNamespaces.AddNamespace("ns", new Uri("http://tempuri.org/schema#"));

            turtleWriter.Save(g2, Console.Out);
        }
#pragma warning disable xUnit1026 // Theory methods should use all of their parameters
        public virtual void JsonLdWriterTests(string testId, JsonLdTestType testType, string inputPath, string contextPath,
                                              string expectedOutputPath, JsonLdErrorCode expectErrorCode, bool useNativeTypes, bool useRdfType, bool ordered, string rdfDirection)
#pragma warning restore xUnit1026 // Theory methods should use all of their parameters
        {
            var nqParser = new NQuadsParser(NQuadsSyntax.Rdf11);
            var input    = new TripleStore();

            nqParser.Load(input, inputPath);
            FixStringLiterals(input);
            var writerOptions = new JsonLdWriterOptions
            {
                UseNativeTypes = useNativeTypes, UseRdfType = useRdfType, Ordered = ordered
            };

            if (rdfDirection != null)
            {
                switch (rdfDirection)
                {
                case "i18n-datatype":
                    writerOptions.RdfDirection = JsonLdRdfDirectionMode.I18NDatatype;
                    break;

                case "compound-literal":
                    writerOptions.RdfDirection = JsonLdRdfDirectionMode.CompoundLiteral;
                    break;

                default:
                    throw new Exception($"Test {testId} specifies an unrecognized value for the rdfDirection option: {rdfDirection}.");
                }
            }
            var jsonLdWriter = new JsonLdWriter(writerOptions);

            switch (testType)
            {
            case JsonLdTestType.PositiveEvaluationTest:
            {
                var actualOutput       = jsonLdWriter.SerializeStore(input);
                var expectedOutputJson = File.ReadAllText(expectedOutputPath);
                var expectedOutput     = JToken.Parse(expectedOutputJson);

                try
                {
                    Assert.True(DeepEquals(expectedOutput, actualOutput, true, true),
                                $"Test failed for input {Path.GetFileName(inputPath)}\nExpected:\n{expectedOutput}\nActual:\n{actualOutput}");
                }
                catch (DeepEqualityFailure ex)
                {
                    Assert.True(false,
                                $"Test failed for input {Path.GetFileName(inputPath)}\nExpected:\n{expectedOutput}\nActual:\n{actualOutput}\nMatch Failured: {ex}");
                }

                break;
            }

            case JsonLdTestType.NegativeEvaluationTest:
            {
                var exception = Assert.Throws <JsonLdProcessorException>(() => jsonLdWriter.SerializeStore(input));
                Assert.Equal(expectErrorCode, exception.ErrorCode);
                break;
            }

            case JsonLdTestType.PositiveSyntaxTest:
                var _ = jsonLdWriter.SerializeStore(input);
                break;

            case JsonLdTestType.NegativeSyntaxTest:
                Assert.ThrowsAny <JsonLdProcessorException>(() => jsonLdWriter.SerializeStore(input));
                break;
            }
        }
Beispiel #15
0
        public static string CreateJson(IGraph graph, JToken frame = null)
        {
            System.IO.StringWriter writer = new System.IO.StringWriter();
            IRdfWriter rdfWriter = new JsonLdWriter();
            rdfWriter.Save(graph, writer);
            writer.Flush();

            if (frame == null)
            {
                return writer.ToString();
            }
            else
            {
                JToken flattened = JToken.Parse(writer.ToString());
                JObject framed = JsonLdProcessor.Frame(flattened, frame, new JsonLdOptions());
                JObject compacted = JsonLdProcessor.Compact(framed, framed["@context"], new JsonLdOptions());

                return compacted.ToString();
            }
        }