Abstract partially implemented DTS discovery as document collector.
Abstract partially implemented DTS discovery as document collector. It is memory-hungry in that all found documents are stored in memory while finding the DTS. It is also unforgiving in that broken links are not allowed.
If there is a broken link due to a typo, consider tweaking the DocumentBuilder with some post-processing.
Default DTS discovery implementation.
Default DTS discovery implementation. It will fail for all found URIs that cannot be resolved to taxonomy documents.
This document collector works well with XBRL Taxonomy Packages, passing an entry point in such a taxonomy package, and using a document builder that uses the XML catalog of the taxonomy package.
Description in a taxonomy package
Strategy for collecting taxonomy documents.
Strategy for collecting taxonomy documents. Typically implemented as DTS discovery, although it is also possible that all document URIs must be explicitly mentioned, as is the case for TrivialDocumentCollector.
Documentation group, so either a Name or a Description
EntryPoint in a taxonomy package
EntryPoint document in a taxonomy package
EntryPoints element in a taxonomy package
Identifier in a taxonomy package
Language in a taxonomy package
Languages element in a taxonomy package
License in a taxonomy package
Name in a taxonomy package
Publication date in a taxonomy package
Publisher in a taxonomy package
Publisher country in a taxonomy package
Publisher URL in a taxonomy package
Superseded taxonomy packages element in a taxonomy package
Fluent interface for bootstrapping a taxonomy.
Fluent interface for bootstrapping a taxonomy. The type system helps in getting bootstrapping right, if we start with the TaxonomyBuilder companion object.
Taxonomy package root element.
Taxonomy package root element.
It does not check validity of the taxonomy package.
XML element inside a taxonomy package XML tree.
XML element inside a taxonomy package XML tree. This API is immutable, provided the backing element is immutable.
The yaidom SubtypeAwareElemApi
and ScopedElemApi
query API is offered.
Note that the package-private constructor contains redundant data, in order to speed up (yaidom-based) querying.
It is not required that the taxonomy package elements are schema-valid. Construction of a taxonomy package element is indeed quite lenient.
Note that the backing element implementation can be any implementation of yaidom query API trait BackingNodes.Elem
.
This class hierarchy depends on Java 8 or later, due to the use of Java 8 time API.
Taxonomy package reference in a taxonomy package
Version in a taxonomy package
Versioning report in a taxonomy package
Versioning reports element in a taxonomy package
Trivial document collector, performing no DTS discovery, but expecting all document URIs to be explicitly given as "entry points" instead.
TQA bootstrapping. It works both in the JVM and in JavaScript runtime environments.
First of all, bootstrapping needs a DocumentBuilder. Next we need a discovery strategy for obtaining the root elements of the taxonomy, as DocumentCollector. This is typically DTS discovery (the details of which can be somewhat tweaked). Finally we need a RelationshipFactory (and maybe an arc filter) to create a BasicTaxonomy.
Once a BasicTaxonomy is created, it can be used as basis for wrapper taxonomy objects that know about networks of relationships, tables/formulas, etc.
The DocumentCollector and DocumentBuilder abstractions play well with XBRL Taxonomy Packages.
Specific DocumentCollectors and DocumentBuilders can be backed by thread-safe (Google Guava) caches in order to prevent re-computations of the same data.
The bootstrapping process is inherently flexible in supporting the loading of more or less broken taxonomies. For example, backing element builders can be made to post-process broken input before the taxonomy DOM is instantiated. As another example, relationships resolution can be as lenient as desired.
This package unidirectionally depends on the eu.cdevreeze.tqa.base.taxonomy, eu.cdevreeze.tqa.base.queryapi, eu.cdevreeze.tqa.base.relationship and eu.cdevreeze.tqa.base.dom packages.