#[non_exhaustive]pub enum ReferentType {
Nominal,
Event,
Fact,
Proposition,
Situation,
Manner,
Segment,
}Expand description
Type of discourse referent (what kind of “thing” can be referred to).
§Why This Taxonomy?
Not all things that can be referred to are “things” in the ordinary sense. When someone says “This surprised me,” the referent might be:
- A person (nominal) → standard coreference
- An event (“the crash”) → needs event extraction
- A fact (“that he won”) → needs propositional analysis
- A situation (“the ongoing crisis”) → needs discourse modeling
The type constrains what predicates are felicitous:
- Events can “happen,” “occur,” be “witnessed”
- Facts can be “known,” “believed,” “denied”
- Propositions can be “true,” “false,” “uncertain”
§Research Background
This taxonomy follows Asher (1993) “Reference to Abstract Objects in Discourse” and Nedoluzhko & Lapshinova-Koltunski (2022) survey.
§Ontological Distinctions
- Nominal: Standard NER entities (Person, Org, etc.)
- Event: Something that happened at a specific time/place
- Fact: A true proposition (can be asserted, denied)
- Proposition: A potential truth value (can be believed, doubted)
- Situation: A state of affairs (ongoing, not instantaneous)
§Connection to Higher-Order Unification
When resolving anaphora to abstract referents, we solve P(source) = interpretation
where the type of P is constrained by the referent type:
| Referent Type | Property Domain | Example Predicate |
|---|---|---|
| Event | event → truth | “shocked everyone” |
| Fact | fact → truth | “is undeniable” |
| Proposition | prop → truth | “worries me” |
| Situation | situation → truth | “was unsustainable” |
Shell nouns (see ShellNounClass) further constrain which referent types
are valid—this acts as a type constraint on the unification variable.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Nominal
Standard nominal entity (Person, Org, Location)
Event
Event: happened at a specific time/place Example: “The earthquake struck” → EVENT
Fact
Fact: a true proposition that can be asserted Example: “Water boils at 100C” → FACT
Proposition
Proposition: a potential truth value Example: “She might resign” → PROPOSITION (not yet true/false)
Situation
Situation: ongoing state of affairs Example: “Prices are rising” → SITUATION
Manner
Manner: how something was done Example: “He spoke softly” → MANNER (the softness)
Segment
Discourse segment: a larger chunk of text Example: “The preceding paragraph” → SEGMENT
Implementations§
Source§impl ReferentType
impl ReferentType
Sourcepub const fn is_abstract(&self) -> bool
pub const fn is_abstract(&self) -> bool
Is this an abstract (non-nominal) referent type?
Sourcepub const fn can_be_this_antecedent(&self) -> bool
pub const fn can_be_this_antecedent(&self) -> bool
Can this referent type be the antecedent of “this”?
Sourcepub const fn can_be_it_antecedent(&self) -> bool
pub const fn can_be_it_antecedent(&self) -> bool
Can this referent type be the antecedent of “it”?
Trait Implementations§
Source§impl Clone for ReferentType
impl Clone for ReferentType
Source§fn clone(&self) -> ReferentType
fn clone(&self) -> ReferentType
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for ReferentType
Source§impl Debug for ReferentType
impl Debug for ReferentType
Source§impl Default for ReferentType
impl Default for ReferentType
Source§fn default() -> ReferentType
fn default() -> ReferentType
Source§impl<'de> Deserialize<'de> for ReferentType
impl<'de> Deserialize<'de> for ReferentType
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<ReferentType, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<ReferentType, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
impl Eq for ReferentType
Source§impl Hash for ReferentType
impl Hash for ReferentType
Source§impl PartialEq for ReferentType
impl PartialEq for ReferentType
Source§fn eq(&self, other: &ReferentType) -> bool
fn eq(&self, other: &ReferentType) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for ReferentType
impl Serialize for ReferentType
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl StructuralPartialEq for ReferentType
Auto Trait Implementations§
impl Freeze for ReferentType
impl RefUnwindSafe for ReferentType
impl Send for ReferentType
impl Sync for ReferentType
impl Unpin for ReferentType
impl UnsafeUnpin for ReferentType
impl UnwindSafe for ReferentType
Blanket Implementations§
impl<T> Boilerplate for T
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more