/// <summary>Visit an entity type constrain.</summary> /// <param name="entityTypeConstrain">Entity type constrain to be visited.</param> protected override void VisitEntityTypeConstrain(EntityTypeConstrain entityTypeConstrain) { if (entityTypeConstrain.InheritedTypes.Any()) { if (_entityAccessorToExpand != null) { VisitComponent(_entityAccessorToExpand.About); _commandText.AppendFormat(" <{0}> ?{1}_type . ", Rdf.type, (_variableNameOverride.ContainsKey(_entityAccessorToExpand.About) ? _variableNameOverride[_entityAccessorToExpand.About] : _entityAccessorToExpand.About.Name)); } _commandText.Append("FILTER ( EXISTS { "); _commandText.AppendFormat("?{0} ", _currentEntityAccessor.Peek().About.Name); VisitComponent(entityTypeConstrain.Predicate); _commandText.Append(" "); VisitComponent(entityTypeConstrain.Value); _commandText.Append(" . } "); foreach (Literal inheritedType in entityTypeConstrain.InheritedTypes) { _commandText.Append("|| EXISTS { "); _commandText.AppendFormat("?{0} ", _currentEntityAccessor.Peek().About.Name); VisitComponent(entityTypeConstrain.Predicate); _commandText.Append(" "); VisitComponent(inheritedType); _commandText.Append(" . } "); } _commandText.Append(") "); } else { VisitEntityConstrain(entityTypeConstrain); } }
/// <summary>Visit an entity type constrain.</summary> /// <param name="entityTypeConstrain">Entity type constrain to be visited.</param> protected abstract void VisitEntityTypeConstrain(EntityTypeConstrain entityTypeConstrain);