Skip to content

Session

fieldz_kb.clingo.session

Clingo session for fieldz_kb.

Provides a Session class for converting fieldz objects to clingo facts and predicate classes.

Classes:

Name Description
Session

Session for converting fieldz objects to clingo predicates and facts.

Session

Session()

Session for converting fieldz objects to clingo predicates and facts.

Example

import dataclasses import fieldz_kb.clingo.session

@dataclasses.dataclass ... class Gene: ... name: str ... chromosome: int

session = fieldz_kb.clingo.session.Session() facts = session.make_facts_from_object(Gene(name="TP53", chromosome=17))

Initialize the session with a fresh clingo context.

Methods:

Name Description
__enter__

Enter the session context manager.

__exit__

Exit the session context manager.

get_or_make_predicate_classes_from_type

Get or create predicate classes for a given Python type.

make_facts_from_object

Convert a Python object to clingo facts.

make_ontology_rules_from_type

Generate ontology rules expressing type inheritance as ASP rules.

reset_context

Replace the conversion context with a fresh one.

Source code in src/fieldz_kb/clingo/session.py
def __init__(self) -> None:
    """Initialize the session with a fresh clingo context."""
    self._context = fieldz_kb.clingo.core.make_context()

__enter__

__enter__() -> Session

Enter the session context manager.

Source code in src/fieldz_kb/clingo/session.py
def __enter__(self) -> "Session":
    """Enter the session context manager."""
    return self

__exit__

__exit__(exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: object) -> None

Exit the session context manager.

Source code in src/fieldz_kb/clingo/session.py
def __exit__(
    self,
    exc_type: type[BaseException] | None,
    exc_val: BaseException | None,
    exc_tb: object,
) -> None:
    """Exit the session context manager."""

get_or_make_predicate_classes_from_type

get_or_make_predicate_classes_from_type(type_: type, module: str | None = None, make_predicate_classes_recursively: bool = True) -> list

Get or create predicate classes for a given Python type.

Parameters:

Name Type Description Default
type_ type

The Python type.

required
module str | None

Module name for resolving forward references.

None
make_predicate_classes_recursively bool

Whether to create predicates for nested types.

True

Returns:

Type Description
list

A list of predicate classes.

Source code in src/fieldz_kb/clingo/session.py
def get_or_make_predicate_classes_from_type(
    self,
    type_: type,
    module: str | None = None,
    make_predicate_classes_recursively: bool = True,
) -> list:
    """Get or create predicate classes for a given Python type.

    Args:
        type_: The Python type.
        module: Module name for resolving forward references.
        make_predicate_classes_recursively: Whether to create predicates for nested types.

    Returns:
        A list of predicate classes.
    """
    return fieldz_kb.clingo.core.get_or_make_predicate_classes_from_type(
        self._context,
        type_,
        module=module,
        make_predicate_classes_recursively=make_predicate_classes_recursively,
    )

make_facts_from_object

make_facts_from_object(obj: object, id_to_object: dict | None = None, integration_mode: Literal['hash', 'id'] = 'id', exclude_from_integration: tuple[type, ...] | None = None) -> list

Convert a Python object to clingo facts.

Parameters:

Name Type Description Default
obj object

The object to convert.

required
id_to_object dict | None

Optional cache mapping fact IDs to objects.

None
integration_mode Literal['hash', 'id']

How to handle duplicate objects ("hash" or "id").

'id'
exclude_from_integration tuple[type, ...] | None

Types to exclude from integration logic.

None

Returns:

Type Description
list

A list of clorm facts.

Source code in src/fieldz_kb/clingo/session.py
def make_facts_from_object(
    self,
    obj: object,
    id_to_object: dict | None = None,
    integration_mode: typing.Literal["hash", "id"] = "id",
    exclude_from_integration: tuple[type, ...] | None = None,
) -> list:
    """Convert a Python object to clingo facts.

    Args:
        obj: The object to convert.
        id_to_object: Optional cache mapping fact IDs to objects.
        integration_mode: How to handle duplicate objects ("hash" or "id").
        exclude_from_integration: Types to exclude from integration logic.

    Returns:
        A list of clorm facts.
    """
    return fieldz_kb.clingo.core.make_facts_from_object(
        self._context,
        obj,
        id_to_object=id_to_object,
        integration_mode=integration_mode,
        exclude_from_integration=exclude_from_integration,
    )

make_ontology_rules_from_type

make_ontology_rules_from_type(type_: type) -> list[str]

Generate ontology rules expressing type inheritance as ASP rules.

Parameters:

Name Type Description Default
type_ type

The Python type to generate rules for.

required

Returns:

Type Description
list[str]

A sorted list of ASP rule strings.

Source code in src/fieldz_kb/clingo/session.py
def make_ontology_rules_from_type(self, type_: type) -> list[str]:
    """Generate ontology rules expressing type inheritance as ASP rules.

    Args:
        type_: The Python type to generate rules for.

    Returns:
        A sorted list of ASP rule strings.
    """
    return fieldz_kb.clingo.core.make_ontology_rules_from_type(
        self._context, type_
    )

reset_context

reset_context() -> None

Replace the conversion context with a fresh one.

Clears all cached predicate classes, type mappings, and ID counter.

Source code in src/fieldz_kb/clingo/session.py
def reset_context(self) -> None:
    """Replace the conversion context with a fresh one.

    Clears all cached predicate classes, type mappings, and ID counter.
    """
    self._context = fieldz_kb.clingo.core.make_context()