Ejemplo n.º 1
0
        protected override void WriteLiteral(ILiteralNode node)
        {
            var token = null as JToken;

            if (!string.IsNullOrEmpty(node.Language))
            {
                token = new JObject(
                    new JProperty(
                        JsonLd.Language,
                        node.Language),
                    new JProperty(
                        JsonLd.Value,
                        node.Value));
            }
            else
            {
                var vn = node.AsValuedNode();

                switch (vn)
                {
                case StringNode valueNode:
                    token = new JValue(valueNode.AsString());
                    break;

                case BooleanNode valueNode:
                    token = new JValue(valueNode.AsBoolean());
                    break;

                case LongNode valueNode:
                    token = new JValue(valueNode.AsInteger());
                    break;

                case DoubleNode valueNode:
                    token = new JValue(valueNode.AsDouble());
                    break;
                }

                if (token == null || vn is StringNode stringNode && node.DataType != null && vn.EffectiveType != XmlSpecsHelper.XmlSchemaDataTypeString)
                {
                    token = new JObject(
                        new JProperty(
                            JsonLd.Type,
                            this.MakeRelative(node.DataType, this.Settings.VocabularyUri)),
                        new JProperty(
                            JsonLd.Value,
                            node.Value));
                }
            }

            if (this.Settings.AlwaysUseStructuredLiterals && token is JValue)
            {
                token = new JObject(
                    new JProperty(
                        JsonLd.Value,
                        token));
            }

            this.writer.WriteToken(token.CreateReader());
        }
Ejemplo n.º 2
0
        private void RoundTripValuedNodeConversion <T>(dynamic value, Func <IValuedNode, T> convertBack)
        {
            // given
            ILiteralNode literalNode = LiteralExtensions.ToLiteral(value, _graph);

            // when
            IValuedNode valuedNode    = literalNode.AsValuedNode();
            T           convertedBack = convertBack(valuedNode);

            // then
            Assert.AreEqual(value, convertedBack);
        }
Ejemplo n.º 3
0
        public void NodeToLiteralDateTimePrecision4()
        {
            DateTime     now     = DateTime.Now;
            NodeFactory  factory = new NodeFactory();
            ILiteralNode litNow  = now.ToLiteral(factory, false);

            //Print out
            Console.WriteLine("Original: " + now.ToString(XmlSpecsHelper.XmlSchemaDateTimeFormat));
            NTriplesFormatter formatter = new NTriplesFormatter();

            Console.WriteLine("Node Form: " + formatter.Format(litNow));

            //Extract and check it round tripped
            DateTimeOffset now2 = litNow.AsValuedNode().AsDateTime();

            Console.WriteLine("Extracted: " + now2.ToString(XmlSpecsHelper.XmlSchemaDateTimeFormat));

            TimeSpan diff = now - now2;

            Console.WriteLine("Difference: " + diff.ToString());
            Assert.True(diff < new TimeSpan(0, 0, 1), "Loss of precision should be at most 1 second");
        }