v0.1.0
Foreign-format readers for vaelii:
the formats the engine reads and does not write, kept out of the
engine and picked up from the classpath.
[com.vaelii/vaelii-foreign "0.1.0"]Nothing to require and nothing to call. A manifest on the classpath
declares kind -> reader var, and the engine resolves one only when
something asks for that kind. Without this artifact, the catalog's
:corpus kind refuses by name rather than failing obscurely.
Five readers, one corpus format.
- OpenCyc — the distribution's own binary CFASL unit dump, or a
CycL text re-dump. The format is read from Cycorp's Apache-2.0
reference implementation rather than reverse-engineered. - RDF, RDFS and OWL — N-Triples, N-Quads, Turtle or RDF/XML, so
Wikidata, YAGO, DBpedia, schema.org, BFO and DOLCE all load. Both
lexers are checked against the W3C RDF 1.1 syntax suites, and every
valid document in all four reads. - WordNet — a
dict/directory, Princeton's WNDB files and Open
English WordNet's. - OBO — read as OBO rather than through the generated OWL, which is
what keeps the relations a Horn engine can hold: the Gene Ontology,
ChEBI, Uberon, and around 200 more. - ATOMIC-2020 — if-then commonsense, entirely at defeasible
strength.
Each converter owns only its own translation and hands the result to
one writer, so a directory any of them produced loads through any of
their load-dir!s and vaelii's catalog opens one without being told
what made it.
A conversion says what it dropped and why. Every drop carries a
kind — :restated, :filtered, :weakened, :unread — because
summing four unlike things into one figure reports a conversion as
broken when it is not. A :filtered drop is reversible with a flag,
and a test walks the manifest to refuse a filtered drop that has
neither a flag nor a written justification. Every corpus directory
carries a NOTICE, since a translation carries its source's terms and
not this repo's.
Known limits, stated because they are structural and not
oversights: forward-chain has to run in the same process as the load,
so chaining a KB reopened from disk derives nothing; the RDF reader is
a projection onto roughly OWL 2 RL, and existentials in the conclusion,
real disjunction, closed classes, negation and cardinality are counted
rather than carried; WordNet sense numbers are not preserved, and
wnOffset is the identifier to join on.
Requires the engine at the same version, JDK 21 or later, and
Leiningen. Licensed Apache-2.0 — deliberately permissive around the
SSPL engine, since this reads formats whose own reference
implementations were published under it.