glazing.verbnet.inheritance¶
Thematic role inheritance utilities.
inheritance
¶
VerbNet thematic role inheritance logic.
This module implements VerbNet's thematic role inheritance system, handling role resolution through class hierarchies, override detection, and complex inheritance chains.
| CLASS | DESCRIPTION |
|---|---|
RoleInheritanceResolver |
Resolve thematic role inheritance in VerbNet classes. |
InheritanceChain |
Track inheritance path through class hierarchy. |
| FUNCTION | DESCRIPTION |
|---|---|
get_effective_roles |
Calculate effective roles for a class considering inheritance. |
resolve_inheritance_chain |
Resolve complete inheritance chain for a class. |
detect_role_overrides |
Find roles that override parent class roles. |
Examples:
>>> from glazing.verbnet.inheritance import RoleInheritanceResolver
>>> from glazing.verbnet.models import VerbClass, ThematicRole
>>> resolver = RoleInheritanceResolver()
>>> parent_class = VerbClass(
... id="give-13.1",
... themroles=[ThematicRole(type="Agent"), ThematicRole(type="Theme")],
... ...
... )
>>> subclass = VerbClass(
... id="give-13.1-1",
... themroles=[], # Empty = inherit all
... parent_class="give-13.1",
... ...
... )
>>> effective = resolver.get_effective_roles(subclass, parent_class.themroles)
>>> print(len(effective)) # Should be 2 (inherited Agent and Theme)
2
Classes¶
InheritanceChain(child_class_id: VerbClassID, parent_chain: list[VerbClassID] | None = None, role_resolutions: dict[ThematicRoleType, tuple[VerbClassID, ThematicRole]] | None = None)
¶
Track inheritance path through VerbNet class hierarchy.
| PARAMETER | DESCRIPTION |
|---|---|
child_class_id
|
The subclass ID.
TYPE:
|
parent_chain
|
Chain of parent class IDs from child to root.
TYPE:
|
role_resolutions
|
Maps role types to their source class and definition.
TYPE:
|
| METHOD | DESCRIPTION |
|---|---|
get_depth |
Get inheritance chain depth. |
get_role_source |
Get which class defines a specific role. |
has_role_override |
Check if role is overridden in subclass. |
Initialize inheritance chain.
| PARAMETER | DESCRIPTION |
|---|---|
child_class_id
|
The subclass identifier.
TYPE:
|
parent_chain
|
Chain of parent class IDs.
TYPE:
|
role_resolutions
|
Role resolution mappings.
TYPE:
|
Source code in src/glazing/verbnet/inheritance.py
Functions¶
get_depth() -> int
¶
Get inheritance chain depth.
| RETURNS | DESCRIPTION |
|---|---|
int
|
Number of levels in inheritance chain. |
get_inherited_roles() -> list[tuple[ThematicRoleType, VerbClassID]]
¶
Get roles inherited from parent classes.
| RETURNS | DESCRIPTION |
|---|---|
list[tuple[ThematicRoleType, VerbClassID]]
|
List of (role_type, source_class_id) for inherited roles. |
Source code in src/glazing/verbnet/inheritance.py
get_overridden_roles() -> list[tuple[ThematicRoleType, VerbClassID]]
¶
Get roles overridden by child class.
| RETURNS | DESCRIPTION |
|---|---|
list[tuple[ThematicRoleType, VerbClassID]]
|
List of (role_type, child_class_id) for overridden roles. |
Source code in src/glazing/verbnet/inheritance.py
get_role_source(role_type: ThematicRoleType) -> tuple[VerbClassID, ThematicRole] | None
¶
Get which class defines a specific role.
| PARAMETER | DESCRIPTION |
|---|---|
role_type
|
Role type to look up.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
tuple[VerbClassID, ThematicRole] | None
|
Source class and role definition, or None if not found. |
Source code in src/glazing/verbnet/inheritance.py
has_role_override(role_type: ThematicRoleType) -> bool
¶
Check if role is overridden in subclass.
| PARAMETER | DESCRIPTION |
|---|---|
role_type
|
Role type to check.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
bool
|
True if role is defined in child class, overriding parent. |
Source code in src/glazing/verbnet/inheritance.py
RoleInheritanceResolver
¶
Resolve thematic role inheritance in VerbNet classes.
Handles VerbNet's inheritance system where empty THEMROLES elements indicate full inheritance from parent classes, and non-empty elements can override or extend parent roles.
| METHOD | DESCRIPTION |
|---|---|
get_effective_roles |
Calculate effective roles considering inheritance. |
resolve_inheritance_chain |
Build complete inheritance chain for a class. |
detect_role_overrides |
Find roles that override parent definitions. |
merge_role_restrictions |
Merge selectional restrictions between child and parent roles. |
Functions¶
detect_role_overrides(child_roles: list[ThematicRole], parent_roles: list[ThematicRole]) -> dict[ThematicRoleType, tuple[ThematicRole, ThematicRole]]
¶
Find roles that override parent definitions.
| PARAMETER | DESCRIPTION |
|---|---|
child_roles
|
Roles defined in child class.
TYPE:
|
parent_roles
|
Roles defined in parent class.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
dict[ThematicRoleType, tuple[ThematicRole, ThematicRole]]
|
Maps role type to (child_role, parent_role) for overrides. |
Source code in src/glazing/verbnet/inheritance.py
get_effective_roles(verb_class: VerbClass, parent_roles: list[ThematicRole] | None = None) -> list[ThematicRole]
¶
Calculate effective roles for a class considering inheritance.
Implements VerbNet's inheritance rules: - Empty themroles list = inherit all parent roles - Non-empty themroles = child roles + non-overridden parent roles - Child roles with same type override parent roles completely
| PARAMETER | DESCRIPTION |
|---|---|
verb_class
|
The verb class to calculate roles for.
TYPE:
|
parent_roles
|
Roles from parent class(es).
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
list[ThematicRole]
|
Effective roles after applying inheritance rules. |
Examples:
>>> resolver = RoleInheritanceResolver()
>>> parent_roles = [ThematicRole(type="Agent"), ThematicRole(type="Theme")]
>>> # Empty themroles = full inheritance
>>> child_empty = VerbClass(id="test-1", themroles=[], ...)
>>> effective = resolver.get_effective_roles(child_empty, parent_roles)
>>> len(effective) # 2 (inherited both)
2
>>> # Override one role
>>> child_override = VerbClass(
... id="test-2",
... themroles=[ThematicRole(type="Agent")], # Override Agent only
... ...
... )
>>> effective = resolver.get_effective_roles(child_override, parent_roles)
>>> len(effective) # 2 (overridden Agent + inherited Theme)
2
Source code in src/glazing/verbnet/inheritance.py
get_inheritance_statistics(class_hierarchy: dict[VerbClassID, VerbClass], class_id: VerbClassID) -> dict[str, str | int | float | bool | list[str] | dict[str, int]]
¶
Get inheritance statistics for a class.
| PARAMETER | DESCRIPTION |
|---|---|
class_hierarchy
|
Complete class hierarchy.
TYPE:
|
class_id
|
Class to analyze.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
dict[str, str | int | float | bool | list[str] | dict[str, int]]
|
Statistics about inheritance patterns. |
Source code in src/glazing/verbnet/inheritance.py
merge_role_restrictions(child_role: ThematicRole, parent_role: ThematicRole) -> ThematicRole
¶
Merge selectional restrictions between child and parent roles.
| PARAMETER | DESCRIPTION |
|---|---|
child_role
|
Child role definition.
TYPE:
|
parent_role
|
Parent role definition.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
ThematicRole
|
Merged role with combined restrictions. |
Source code in src/glazing/verbnet/inheritance.py
resolve_inheritance_chain(class_hierarchy: dict[VerbClassID, VerbClass], class_id: VerbClassID) -> InheritanceChain
¶
Build complete inheritance chain for a VerbNet class.
| PARAMETER | DESCRIPTION |
|---|---|
class_hierarchy
|
Complete class hierarchy mapping.
TYPE:
|
class_id
|
Class to build chain for.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
InheritanceChain
|
Complete inheritance chain with role resolutions. |
| RAISES | DESCRIPTION |
|---|---|
ValueError
|
If class_id is not found in hierarchy. |
Source code in src/glazing/verbnet/inheritance.py
Functions¶
analyze_inheritance_patterns(class_hierarchy: dict[VerbClassID, VerbClass]) -> dict[str, int | float | dict[str, int | float]]
¶
Analyze inheritance patterns across VerbNet classes.
| PARAMETER | DESCRIPTION |
|---|---|
class_hierarchy
|
Complete VerbNet class hierarchy.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
dict[str, int | float | dict[str, int | float]]
|
Analysis results including statistics and patterns. |
Source code in src/glazing/verbnet/inheritance.py
detect_role_overrides(child_roles: list[ThematicRole], parent_roles: list[ThematicRole]) -> dict[ThematicRoleType, tuple[ThematicRole, ThematicRole]]
¶
Find thematic roles that override parent definitions.
| PARAMETER | DESCRIPTION |
|---|---|
child_roles
|
Roles from child class.
TYPE:
|
parent_roles
|
Roles from parent class.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
dict[ThematicRoleType, tuple[ThematicRole, ThematicRole]]
|
Override mappings. |
Source code in src/glazing/verbnet/inheritance.py
get_effective_roles(verb_class: VerbClass, parent_roles: list[ThematicRole] | None = None) -> list[ThematicRole]
¶
Calculate effective roles for a VerbNet class considering inheritance.
| PARAMETER | DESCRIPTION |
|---|---|
verb_class
|
The verb class to calculate roles for.
TYPE:
|
parent_roles
|
Roles from parent class.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
list[ThematicRole]
|
Effective roles after inheritance. |
Source code in src/glazing/verbnet/inheritance.py
resolve_inheritance_chain(class_hierarchy: dict[VerbClassID, VerbClass], class_id: VerbClassID) -> InheritanceChain
¶
Resolve complete inheritance chain for a VerbNet class.
| PARAMETER | DESCRIPTION |
|---|---|
class_hierarchy
|
Complete class hierarchy mapping.
TYPE:
|
class_id
|
Class to build chain for.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
InheritanceChain
|
Complete inheritance chain. |