001package de.monochromata.anaphors.ast.reference.strategy.feature;
002
003import de.monochromata.anaphors.ast.ASTBasedAnaphorResolution;
004import de.monochromata.anaphors.ast.feature.Feature;
005import de.monochromata.anaphors.ast.reference.strategy.ReferentializationStrategy;
006import de.monochromata.anaphors.ast.reference.strategy.concept.ConceptReferentializationStrategy;
007
008/**
009 * A referentialization strategy that interprets those parts of an identifier
010 * not consumed by a {@link ConceptReferentializationStrategy} that this
011 * strategy delegates to. This referentialization strategy interprets the
012 * remaining parts of the identifier as verbalizations of {@link Feature}s.
013 * 
014 * <p>
015 * Note that {@link ASTBasedAnaphorResolution} should not contain the delegates
016 * returned by {@link #getDelegate()} because the
017 * {@link FeatureReferentializationStrategy} will also apply to cases when the
018 * delegate consumes all information in the definite expression. If both the
019 * feature referentialization strategy and its delegate would be activated
020 * during anaphor resolution, such cases would result in (technical) referential
021 * ambiguity.
022 * </p>
023 *
024 * @param <E>
025 *            The expression type
026 * @param <TB>
027 *            The type binding type
028 * @param <S>
029 *            The scope type (optional)
030 * @param <I>
031 *            The type used to represent identifiers
032 * @param <QI>
033 *            The type used to represent qualified identifiers
034 */
035public interface FeatureReferentializationStrategy<E, TB, S, I, QI>
036                extends ReferentializationStrategy<E, TB, S, I, QI> {
037
038        /**
039         * Provides access to the {@link ConceptReferentializationStrategy} that
040         * this feature referentialization strategy delegates to.
041         * 
042         * @return the delegate
043         */
044        public ConceptReferentializationStrategy<E, TB, S, I, QI> getDelegate();
045
046}