pub struct PostgresTripleSource { /* private fields */ }Expand description
Synchronous TripleSource over the async TripleRepository.
Each method runs the async scan to completion via
Handle::current().block_on(...). This is only valid when called from
inside tokio::task::spawn_blocking, which is exactly how the SPARQL engine
drives the evaluator’s synchronous QueryableDataset.
Implementations§
Source§impl PostgresTripleSource
impl PostgresTripleSource
pub fn new(triples: Arc<TripleRepository>, accel: AccelRepository) -> Self
Trait Implementations§
Source§impl Clone for PostgresTripleSource
impl Clone for PostgresTripleSource
Source§impl TripleSource for PostgresTripleSource
impl TripleSource for PostgresTripleSource
Source§fn scan_all_page(
&self,
after: Option<&str>,
limit: usize,
) -> Result<TripleScanPage, DomainError>
fn scan_all_page( &self, after: Option<&str>, limit: usize, ) -> Result<TripleScanPage, DomainError>
Stable, resumable keyset page over the complete quad store. Large
maintenance jobs use this instead of requesting
i64::MAX rows. The
default supports small/test stores in one bounded page and fails closed
if another page would be required.Source§fn scan_pattern(
&self,
subject: Option<&PatternSubject>,
predicate: Option<&str>,
object: Option<&PatternObject>,
graph: Option<&GraphFilter>,
limit: i64,
) -> Result<Vec<Triple>, DomainError>
fn scan_pattern( &self, subject: Option<&PatternSubject>, predicate: Option<&str>, object: Option<&PatternObject>, graph: Option<&GraphFilter>, limit: i64, ) -> Result<Vec<Triple>, DomainError>
Scan triples matching a pattern. Any position may be bound or wildcarded
(
None); limit caps the rows returned per call.Source§fn distinct_named_graphs(&self) -> Result<Vec<String>, DomainError>
fn distinct_named_graphs(&self) -> Result<Vec<String>, DomainError>
Distinct named graphs present in the store.
Source§fn triples_for_graph(
&self,
graph: Option<&str>,
limit: i64,
) -> Result<Vec<Triple>, DomainError>
fn triples_for_graph( &self, graph: Option<&str>, limit: i64, ) -> Result<Vec<Triple>, DomainError>
Every triple in one named graph (
Some) or the default partition
(None), capped at limit.Source§fn triples_for_subject(
&self,
subject_iri: &str,
) -> Result<Vec<Triple>, DomainError>
fn triples_for_subject( &self, subject_iri: &str, ) -> Result<Vec<Triple>, DomainError>
Every triple with the given subject IRI.
Source§fn run_accelerated(
&self,
query: &AcceleratedQuery,
) -> Result<Option<AccelSolutions>, DomainError>
fn run_accelerated( &self, query: &AcceleratedQuery, ) -> Result<Option<AccelSolutions>, DomainError>
Answer a recognized SynBioHub query from purpose-built indexes. Returns
Ok(None) when this backend has no accelerator or declines the query, so
the caller falls back to generic SPARQL evaluation.Source§fn supports_id_scan(&self) -> bool
fn supports_id_scan(&self) -> bool
Whether this backend can scan by term id (
Self::id_scan). An id-native
backend lets the SPARQL evaluator join on term ids and materialize terms
only for output rows; the default is false and the evaluator uses the
term-materializing Self::scan_pattern path.Source§fn id_scan(
&self,
_subject: Option<[u8; 16]>,
_predicate: Option<[u8; 16]>,
_object: Option<[u8; 16]>,
_graph: &IdGraphFilter,
_limit: i64,
) -> Result<Vec<IdQuad>, DomainError>
fn id_scan( &self, _subject: Option<[u8; 16]>, _predicate: Option<[u8; 16]>, _object: Option<[u8; 16]>, _graph: &IdGraphFilter, _limit: i64, ) -> Result<Vec<IdQuad>, DomainError>
Scan a pattern returning term ids rather than materialized triples. Bound
positions are given as ids (see
Self::term_to_id). Only meaningful when
Self::supports_id_scan is true.Source§fn term_to_id(&self, _key: TermKey<'_>) -> Result<[u8; 16], DomainError>
fn term_to_id(&self, _key: TermKey<'_>) -> Result<[u8; 16], DomainError>
Resolve a term to its id (the same id stored in the indexes), for binding
query constants into an id-native scan.
Source§fn id_to_term(&self, _id: [u8; 16]) -> Result<TermValue, DomainError>
fn id_to_term(&self, _id: [u8; 16]) -> Result<TermValue, DomainError>
Resolve a term id back to its value, for materializing output rows and
filter operands.
Auto Trait Implementations§
impl !RefUnwindSafe for PostgresTripleSource
impl !UnwindSafe for PostgresTripleSource
impl Freeze for PostgresTripleSource
impl Send for PostgresTripleSource
impl Sync for PostgresTripleSource
impl Unpin for PostgresTripleSource
impl UnsafeUnpin for PostgresTripleSource
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more