pub struct SortableTermEncoding;
Expand description
The sortable term encoding allows us to represent the expected SPARQL ordering using DataFusion’s built-in ordering for structs.
This is meant as a work-around until we can define a custom ordering in DataFusion. Alternatively, we could also write a custom operator for sorting SPARQL solutions.
Implementations§
Source§impl SortableTermEncoding
impl SortableTermEncoding
Sourcepub fn encode_term(
&self,
term: Result<TermRef<'_>, ThinError>,
) -> Result<SortableTermScalar, DataFusionError>
pub fn encode_term( &self, term: Result<TermRef<'_>, ThinError>, ) -> Result<SortableTermScalar, DataFusionError>
Encodes the term
as a SortableTermScalar.
Trait Implementations§
Source§impl Debug for SortableTermEncoding
impl Debug for SortableTermEncoding
Source§impl TermEncoder<SortableTermEncoding> for TermRefSortableTermEncoder
impl TermEncoder<SortableTermEncoding> for TermRefSortableTermEncoder
Source§fn encode_terms<'data>(
terms: impl IntoIterator<Item = Result<<TermRefSortableTermEncoder as TermEncoder<SortableTermEncoding>>::Term<'data>, ThinError>>,
) -> Result<<SortableTermEncoding as TermEncoding>::Array, DataFusionError>
fn encode_terms<'data>( terms: impl IntoIterator<Item = Result<<TermRefSortableTermEncoder as TermEncoder<SortableTermEncoding>>::Term<'data>, ThinError>>, ) -> Result<<SortableTermEncoding as TermEncoding>::Array, DataFusionError>
Allows encoding an iterator over RDF terms in an Arrow array.
Source§fn encode_term(
term: Result<<TermRefSortableTermEncoder as TermEncoder<SortableTermEncoding>>::Term<'_>, ThinError>,
) -> Result<<SortableTermEncoding as TermEncoding>::Scalar, DataFusionError>
fn encode_term( term: Result<<TermRefSortableTermEncoder as TermEncoder<SortableTermEncoding>>::Term<'_>, ThinError>, ) -> Result<<SortableTermEncoding as TermEncoding>::Scalar, DataFusionError>
Allows encoding a scalar RDF term in an Arrow scalar.
Source§impl TermEncoder<SortableTermEncoding> for TypedValueRefSortableTermEncoder
impl TermEncoder<SortableTermEncoding> for TypedValueRefSortableTermEncoder
Source§type Term<'data> = TypedValueRef<'data>
type Term<'data> = TypedValueRef<'data>
The value type that is being encoded.
Source§fn encode_terms<'data>(
terms: impl IntoIterator<Item = Result<<TypedValueRefSortableTermEncoder as TermEncoder<SortableTermEncoding>>::Term<'data>, ThinError>>,
) -> Result<<SortableTermEncoding as TermEncoding>::Array, DataFusionError>
fn encode_terms<'data>( terms: impl IntoIterator<Item = Result<<TypedValueRefSortableTermEncoder as TermEncoder<SortableTermEncoding>>::Term<'data>, ThinError>>, ) -> Result<<SortableTermEncoding as TermEncoding>::Array, DataFusionError>
Allows encoding an iterator over RDF terms in an Arrow array.
Source§fn encode_term(
term: Result<<TypedValueRefSortableTermEncoder as TermEncoder<SortableTermEncoding>>::Term<'_>, ThinError>,
) -> Result<<SortableTermEncoding as TermEncoding>::Scalar, DataFusionError>
fn encode_term( term: Result<<TypedValueRefSortableTermEncoder as TermEncoder<SortableTermEncoding>>::Term<'_>, ThinError>, ) -> Result<<SortableTermEncoding as TermEncoding>::Scalar, DataFusionError>
Allows encoding a scalar RDF term in an Arrow scalar.
Source§impl TermEncoding for SortableTermEncoding
impl TermEncoding for SortableTermEncoding
Source§type Array = SortableTermArray
type Array = SortableTermArray
Represents a wrapper for Arrow arrays of this encoding. This can be used in
conjunction with TermDecoder to obtain the values from an Arrow array.
Source§type Scalar = SortableTermScalar
type Scalar = SortableTermScalar
Represents a wrapper for Arrow scalars of this encoding. This can be used in
conjunction with TermDecoder to obtain the values from an Arrow scalar.
Source§fn name(&self) -> EncodingName
fn name(&self) -> EncodingName
Returns the name of the encoding.
Source§fn try_new_array(
&self,
array: Arc<dyn Array>,
) -> Result<<SortableTermEncoding as TermEncoding>::Array, DataFusionError>
fn try_new_array( &self, array: Arc<dyn Array>, ) -> Result<<SortableTermEncoding as TermEncoding>::Array, DataFusionError>
Checks whether
array
contains a value with the correct encoding (i.e., type and possibly
metadata checks). If yes, returns an instance of Self::Array. Otherwise, an error is
returned.Source§fn try_new_scalar(
&self,
scalar: ScalarValue,
) -> Result<<SortableTermEncoding as TermEncoding>::Scalar, DataFusionError>
fn try_new_scalar( &self, scalar: ScalarValue, ) -> Result<<SortableTermEncoding as TermEncoding>::Scalar, DataFusionError>
Checks whether
scalar
contains a value with the correct encoding (i.e., type and possibly
metadata checks). If yes, returns an instance of Self::Scalar. Otherwise, an error is
returned.Source§fn try_new_datum(
&self,
value: ColumnarValue,
number_rows: usize,
) -> Result<EncodingDatum<Self>, DataFusionError>
fn try_new_datum( &self, value: ColumnarValue, number_rows: usize, ) -> Result<EncodingDatum<Self>, DataFusionError>
Checks whether
value
contains a value with the correct encoding (i.e., type and possibly
metadata checks). If yes, returns a datum that either wraps an array or a scalar. Otherwise,
an error is returned.Auto Trait Implementations§
impl Freeze for SortableTermEncoding
impl RefUnwindSafe for SortableTermEncoding
impl Send for SortableTermEncoding
impl Sync for SortableTermEncoding
impl Unpin for SortableTermEncoding
impl UnwindSafe for SortableTermEncoding
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> 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