- `Synonym.xrefs` now has a setter. ((https://github.com/althonos/pronto/issues/70))
- `pickle` support for `Ontology`. ((https://github.com/althonos/pronto/issues/66))
- `RdfXmlParser` support for `owl:inverseOf` and `rdfs:subPropertyOf`.
- `Synonym.xrefs` now returns a mutable set that can be used to add
`Xref` to the synonym directly.
- `SynonymType.type` setter does not consider all synonym types as
undeclared anymore. ((https://github.com/althonos/pronto/issues/71))
- `RdfXmlParser` crashing on synonym types definition without a label
like in Uberon. ((https://github.com/althonos/pronto/issues/67))
- `FastoboSerializer` crashing when encountering a relationship with
at least one `replaced_by` clause.
- Internal handling of ontology data forcing an `Ontology` to outlive all
of the `Term`s created from it.
- `Term.id` property missing a return type annotation.
- `Term.equivalent_to` not returning a `TermSet` but a set of strings.
- Refactored implementation of `SubclassesIterator` and
`SuperclassesIterator` to make both use the interal subclassing cache.
- Make `Term.is_leaf` use internal subclassing cache to make it run in
- `TermSet.subclasses` and `TermSet.superclasses` methods to query all
the subclasses / superclasses of all `Term`.
- `TermSet` class to the top-level `pronto` module.
- Dynamic management of subclassing cache for the `Ontology` class.
- Setters for `Term.consider`, `Term.union_of` and `Term.intersection_of`.
- `cache` keyword argument for the `Ontology`.
- `SuperclassesIterator.to_set` being named `to_self` because of a typo.
- Several bugs affecting the `fastobo`-backed serializer.
- Parameter `with_self` to disable reflexivity of `Term.subclasses` and
- `TermSet` class which stores a set of terms efficiently while providing
some useful shortcuts to access the underlying data.
- Moved code of `Term.subclasses` and `Term.superclasses` to a dedicated
iterator class in the `pronto.logic` submodule.
- Dropped `contexter` requirement.
- Fix a typo in `Synonym.type` setter leading to a potential bug when
the given `type` is `None`.
- Fix miscellaneous bugs found with `mypy`.
- `fastobo` serializer crashing on namespace clauses because of a type
- `fastobo` parsers using data version clauses as format version clauses.
- Bumped `fastobo` to `v0.7.0`, switching parser implementation to use
multi-threading in order to speedup the parser process.
- Explicit support for Python 3.8.
- Support for Windows-style line endings
- Handling of some clauses in `FastoboParser`.
- `OboSerializer` occasionaly missing lines between term and typedef frames.
- Missing docstrings to some `Entity` properties.
- `RdfXMLParser` crashing on entities with `rdf:label` elements
without literal content.
- `pronto.serializers` module not being embedded in Wheel distribution.
- `Entity.add_synonym` method to create a new synonym and add it to an entity.
- `roundrepr` now adds a minimal docstring to the generated `__repr__` method.
- `Ontology` caches subclassing relationships to greatly improve performance of
- `Entity` subclasses now store their `id` directly to improve performance.
- `Term.subclasses` and `Term.superclasses` use `collections.deque` instead of
`queue.Queue` as a LIFO structure since thread-safety is not needed.
- `chardet` result is now used even when prediction confidence is under 100%
to detect encoding of the handle passed to `Ontology`.
- `SynonymType` comparison implementation.
- `Synonym.type` getter crashing on `type` not being `None`.
- `RdfXMLParser` crashing on synonymtypedefs without scope specifiers.
- Issues with typedef serialization in `FastoboSerializer`.
- `Ontology.create_term` and `Ontology.create_relationship` not raising `ValueError`
when given an identifier already in the knowledge graph.
- Signature of `BaseSerializer.dump` to remove `encoding` argument.
- Missing `__slots__` in `Entity` in non-typechecking runtime.
- Bumped `fastobo` requirement to `v0.6.0`.
- Extraction of `oboInOwl:consider` annotation in `RdfXMLParser`.
- Extraction of `oboInOwl:savedBy` annotation in `RdfXMLParser`.
- Extraction of `subsetdef` and `synonymtypedef` as annotation properties in
- Support for `doap:Version` instead of `owl:VersionIri` for specification
of ontology data version.
- Proper comparison of `PropertyValue` classes, based on the lexicographic order
of their serialization.
- `Ontology.dump` and `Ontology.dumps` methods to serialize an ontology in
**obo** or **obojson** format.
- `Metadata` not storing optional description of ID spaces if any.
- Wrong type hints in `RelationshipData.equivalent_to_chain`.
- Added type checking to some more property setters.
- Avoid using `networkx` in `Term.subclasses`.
- `fastobo`-derived parsers will not create a new entity if one exists in the
graph of dependencies already.
- Exposed `pronto.warnings` and the complete warnings hierarchy.
- Support for extraction of relationships from OWL/XML files to `OwlXMLParser`.
- Type hints of `RelationshipData.synonyms` attribute.
- Dropped support for Python earlier than `3.6`.
- Brand new data model that follow the OBO 1.4 object model.
- Partial OWL XML parser implementation using the OBO 1.4 semantics.
- New OBO parser implementation based on `fastobo`.
- Imports are properly separated from the top-level ontology.
- `Ontology.__getitem__` can also access entities from imports.
- `Term`, `Relationship`, `Xref`, `SynonymType` compare only based on their ID.
- `Subset`, `Definition` compare only based on their textual value.
- Support for OBO JSON parser based on `fastobo`.
- Provisional `mypy` type hints.
- Type checking for most properties in `__debug__` mode.
- Proper `repr` implementation that should roundtrip most of the time.
- Detection of file format and encoding based on buffer content.
- OBO and JSON serialization support (for now).
- `Term.rchildren` and `Term.rparents` and stop making direction assumptions on relationships.