Skip to main content

SparqlAdapter

Struct SparqlAdapter 

Source
pub struct SparqlAdapter {
    pub id: &'static str,
    pub endpoint: String,
}
Expand description

Adapter for Semantic Web RDF / SPARQL endpoints (e.g. Wikidata).

Fields§

§id: &'static str§endpoint: String

Implementations§

Source§

impl SparqlAdapter

Source

pub fn new(id: &'static str, endpoint: &str) -> Self

Source

pub fn parse_features(&self, body: &str) -> Result<Vec<NQuin>, String>

Parse a standard SPARQL 1.1 Query Results JSON response (e.g. from Wikidata or any generic SPARQL endpoint) into provenance NQuins.

The mapping is generic and deterministic so the resulting quins are queryable by the SPARQL layer, which hashes IRIs with the same generate_60bit_token:

For each results.bindings row i (iterating head.vars in declared order):

  • subject = the value of the FIRST variable whose binding is type == "uri"; if the row binds no URI, subject = generate_60bit_token("urn:sparql:row:{i}").
  • for every OTHER bound variable v in the row: predicate = generate_60bit_token("urn:sparql:var:{v}"), object = generate_60bit_token(binding.value), emitting quin(subject, predicate, object).

If results or results.bindings are absent, an empty Vec is returned (not an error). Err is only returned when body is not valid JSON.

Trait Implementations§

Source§

impl DataAdapter for SparqlAdapter

Source§

fn adapter_id(&self) -> &'static str

Returns the unique identifier for this adapter (e.g., “dem_adapter”)
Source§

fn build_fetch_request( &self, bbox: (f64, f64, f64, f64), _time_range: (u64, u64), registry: &NetworkDisclosureRegistry, ) -> Result<AdapterHttpRequest, String>

Build the outbound request for a spatial bounding box [x1, y1, x2, y2] and temporal range [t0, t1]. Implementations must check NetworkDisclosureRegistry before returning an actual network request.
Source§

fn parse_response(&self, body: &str) -> Result<Vec<NQuin>, String>

Parse a fetched response body into provenance NQuins (title / license / created / source / lat / long, hashed with the same generate_60bit_token the SPARQL layer uses, so the results are queryable). Adapters that can interpret their response format override this — GBIF, OSM/Overpass, STAC, OGC 3D Tiles and SPARQL-results do — and the default yields none. This is how a fetched response becomes graph data rather than being discarded.
Source§

fn primary_endpoint(&self) -> &str

Primary egress endpoint for disclosure checks and fetch reports.
Source§

fn estimate_tile_count(&self, _bbox: (f64, f64, f64, f64)) -> u32

Honest estimate of how many tile/API units would be requested (no fake payloads).
Source§

fn fetch_region( &self, bbox: (f64, f64, f64, f64), time_range: (u64, u64), registry: &NetworkDisclosureRegistry, ) -> Result<(), String>

Initiate fetching through the native blocking transport. Browser WASM cannot legally block on network I/O, so wasm callers use fetch_region_async.
Source§

fn needs_fetch_body(&self) -> bool

Whether the adapter consumes the response body instead of only checking that the endpoint accepted the request.
Source§

fn handle_fetch_body(&self, _body: &str) -> Result<(), String>

Parse or enqueue the fetched body. Most adapters currently only verify access; CKAN consumes JSON discovery results here.
Source§

fn fetch_region_features( &self, bbox: (f64, f64, f64, f64), time_range: (u64, u64), registry: &NetworkDisclosureRegistry, ) -> Result<Vec<NQuin>, String>

Native fetch that returns the parsed provenance NQuins: build the consent-gated request, execute it, and run parse_response on the body. A caller can then route the quins into the graph. (WASM callers fetch via fetch_region_async and call parse_response on the returned body.)

Auto Trait Implementations§

Blanket Implementations§

§

impl<S, A> Aggregate<Result<S, Error>> for A
where A: Aggregate<S>,

§

fn from_shares<T>(iter: T) -> Result<A, Error>
where T: IntoIterator<Item = Result<S, Error>>,

Aggregate shares in an MPC protocol.
Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> Upcast<T> for T

§

fn upcast(&self) -> Option<&T>

§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

§

impl<T> WasmNotSend for T
where T: Send,

§

impl<T> WasmNotSendSync for T
where T: WasmNotSend + WasmNotSync,

§

impl<T> WasmNotSync for T
where T: Sync,