Skip to content

Roadmap

Solvers

Add solvers for the following:

  • dlv
  • vampire
  • OWL Reasoners (via owlery, robot, or py-horned-owl)
  • problog

Framework Integrations

  • OWL, using py-horned-owl
  • LinkML

Transformations

Add other useful transformations, e.g NNF

Documentation

  • document differences with HETS, DOL

Current Limitations

Nested objects

In Python data models it's common to have something like:

class Address(BaseModel):
    street: str
    city: str
    state: str

class Person(BaseModel):
    name: str
    addresses: List[Address]

Which assumes nested data objects, typically serialized as YAML/JSON.

Currently typedlogic forces you to model in Normal Form, for example:

class Address(BaseModel):
    id: str
    address_street: str
    address_city: str
    address_state: str


class Person(BaseModel):
    name: str

class PersonAddress(BaseModel):
    person_name: str
    address_id: str

This is more typical of how you would model things with SQLModel or SQLAlchemy classes that are isomorphic to SQL tables.

The corresponding instances (ground terms) would not involve any nesting.

In the future, we would like to do this normalization on the fly, AND/OR something analogous to JSONB in Postgresql.