Module system-core
Connectors, Connections, and Statements
The main interface is DBConnector
, a closeable factory for OntopConnection
s and, from them, OntopStatement
, which mirror the JDBC Connection
and Statement
abstractions.
Interface OntopQueryEngine
provide similar facilities of DBConnector
and its implmentation OntopQueryEngineImpl
indeed delegates to a DBConnector
instance.
DBConnector
and related interfaces are implemented differently based on queried backend, and GUICE factory OntopSystemFactory
allows creating both DBConnector
s and OntopQueryEngine
based on configurated implementations.
Abstract class QuestStatement
provids a skeletical implementation of OntopStatement
which leverages QueryReformulator.reformulateNativeQuery()
to process the input query.
Result Set Implementations
Classes DefaultSimpleGraphResultSet
and PredefinedBooleanResultSet
provide default implementations for graph and boolean queries, the first delegating to a TupleResultSet
.
Materialization
Interface OntopRDFMaterializer
and associated MaterializationParams
can be instantiated via static methods / builders and provide support for materializing the virtual RDF graph (MaterializedGraphResultSet
) obtained via OBDA. Its implementation leverage an instance of OntopQueryEngine
obtained through GUICE.
Query Manager
Package querymanager
provide data model classes for representing a collections of groups (QueryControllerQuery
) of queries (QueryControllerGroup
) that can be manipulated (added, removed, edited) with listener modification. The package is used by the protege Maven module.
Version Info
Singleton class VersionInfo
provides access to Ontop version information read from a properties resource.
Remarks
- one among
DBConnector
andOntopQueryEngine
seems redundant -
OntopConnection
andOntopStatement
extend interfacesOBDAConnection
andOBDAStatement
, which are never used alone and thus appear as redundant - materialization may be offered as an additional service of
OntopConnection
/OntopStatement
(see, e.g., how RDF export in RDF4J is offered at connection level and not through a separate component delegating to a connection) - it's unclear why
querymanager
code is placed in thesystem-core
module