private void ProcessSelectableIdentifierEntityAccessor(IdentifierEntityAccessor expression, bool isSubQuery, Func <string, string> createVariableName, StrongEntityAccessor mainEntityAccessor) { if (_currentStrongEntityAccessorVisitDelegate == VisitStrongEntityAccessorInternal) { _currentStrongEntityAccessorVisitDelegate = VisitStrongEntityAccessorInternalQuick; } if (!isSubQuery) { if ((_metaGraphVariableName == null) && (_entityVariableName == null)) { _metaGraphVariableName = String.Format("G{0}", expression.About.Name); _entityVariableName = _ownerVariableName = expression.About.Name + "_Distinct"; } _subjectVariableName = expression.About.Name; _predicateVariableName = expression.About.Name + "_Predicate"; _objectVariableName = expression.About.Name + "_Object"; _commandText.AppendFormat( "DISTINCT(?{2}) AS ?{1} ?{0} ?{3} ?{4} ?{5} ", _metaGraphVariableName, _entityVariableName, expression.About.Name, _predicateVariableName, _objectVariableName, _ownerVariableName); } }
/// <summary>Visit an identifier entity accessor.</summary> /// <param name="entityAccessor">Identifier entity accessor to be visited.</param> protected override void VisitIdentifierEntityAccessor(IdentifierEntityAccessor entityAccessor) { Call predicateBind = new Call(MethodNames.Bind); predicateBind.Arguments.Add(new Alias(new Literal(Rdf.predicate), new Identifier(entityAccessor.About.Name + "_Predicate"))); Call objectBind = new Call(MethodNames.Bind); objectBind.Arguments.Add(new Alias(new Literal(Rdf.@object), new Identifier(entityAccessor.About.Name + "_Object"))); _injectedComponents.Add(predicateBind); _injectedComponents.Add(objectBind); VisitStrongEntityAccessor(entityAccessor.EntityAccessor); _injectedComponents.Clear(); }
private void OverrideIdentifierSelector(StrongEntityAccessor entityAccessor) { IdentifierEntityAccessor identifierEntityAccessor = new IdentifierEntityAccessor(entityAccessor.About, entityAccessor); int indexOf = -1; if ((indexOf = _query.Elements.IndexOf(entityAccessor)) != -1) { _query.Elements.RemoveAt(indexOf); _query.Elements.Insert(indexOf, identifierEntityAccessor); } _query.Select.Clear(); _query.Select.Add(identifierEntityAccessor); _mainFromComponent = identifierEntityAccessor; }
/// <summary>Visit an identifier entity accessor.</summary> /// <param name="entityAccessor">Identifier entity accessor to be visited.</param> protected abstract void VisitIdentifierEntityAccessor(IdentifierEntityAccessor entityAccessor);
/// <summary>Default constructor with nagivated identifier entity accessor.</summary> /// <param name="entityAccessor">Nagivated entity accessor.</param> internal IdentifierEntityAccessorNavigator(IdentifierEntityAccessor entityAccessor) : base(entityAccessor) { }