/// <summary> /// Adds a new property value to this object /// </summary> /// <param name="type">The type of the property to add</param> /// <param name="value">The value of the property</param> /// <param name="lang">OPTIONAL: The language code of the literal value. This parameter is ignored if <paramref name="value"/> is an <see cref="IDataObject"/></param> /// <returns>This IDataOjbect to allow chained calls</returns> public IDataObject AddProperty(IDataObject type, object value, string lang = null) { if (value is IDataObject) { AddDataObjectProperty(type, value as IDataObject); } else if (value is Uri) { AddDataObjectProperty(type, _store.MakeDataObject(value.ToString())); } else { if (type == null) { throw new ArgumentNullException("type"); } if (value == null) { throw new ArgumentNullException("value"); } string dataType = RdfDatatypes.GetRdfDatatype(value.GetType()); string litString = RdfDatatypes.GetLiteralString(value); AddLiteralProperty(type, litString, dataType, lang ?? RdfDatatypes.GetLiteralLanguageTag(value)); } return(this); }
protected override Expression VisitExtensionExpression(ExtensionExpression expression) #endif { if (expression is SelectIdentifierVariableNameExpression) { var siv = expression as SelectIdentifierVariableNameExpression; var v = _values[siv.Name].ToString(); if (!String.IsNullOrEmpty(siv.IdentifierPrefix) && v.StartsWith(siv.IdentifierPrefix)) { v = v.Substring(siv.IdentifierPrefix.Length); } if (siv.Type.IsInstanceOfType(v)) { return(Expression.Constant(v, siv.Type)); } var converted = _converter(v, RdfDatatypes.GetLiteralLanguageTag(_values[siv.Name]), siv.Type); return(Expression.Constant(converted, siv.Type)); } if (expression is SelectVariableNameExpression) { var svn = expression as SelectVariableNameExpression; var v = _values[svn.Name]; if (svn.Type.IsInstanceOfType(v)) { return(Expression.Constant(v, svn.Type)); } var converted = _converter(v.ToString(), RdfDatatypes.GetLiteralLanguageTag(v), svn.Type); return(Expression.Constant(converted, svn.Type)); } return(expression); }
protected override Expression VisitMemberExpression(MemberExpression expression) { if (expression.Expression is SelectVariableNameExpression) { // Extracting a value from a resource that should be in the _values dictionary var svn = expression.Expression as SelectVariableNameExpression; var parent = _converter(_values[svn.Name].ToString(), RdfDatatypes.GetLiteralLanguageTag(_values[svn.Name]), svn.Type); if (expression.Member is PropertyInfo) { var property = expression.Member as PropertyInfo; var value = property.GetValue(parent, null); return(Expression.Constant(value)); } } return(base.VisitMemberExpression(expression)); }