Add classes function for Datasets, reorg modules

This commit is contained in:
2026-05-22 17:23:36 -04:00
parent 75069f52d6
commit cdc38eb9f3
5 changed files with 51 additions and 21 deletions
Generated
+16 -16
View File
@@ -107,9 +107,9 @@ dependencies = [
[[package]] [[package]]
name = "bumpalo" name = "bumpalo"
version = "3.20.2" version = "3.20.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649"
[[package]] [[package]]
name = "bytes" name = "bytes"
@@ -641,9 +641,9 @@ dependencies = [
[[package]] [[package]]
name = "js-sys" name = "js-sys"
version = "0.3.98" version = "0.3.99"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "67df7112613f8bfd9150013a0314e196f4800d3201ae742489d999db2f979f08" checksum = "142bc4740e452c1e57ade0cbc129f139c9093e354346f0872ef985f4f5cf5f11"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"futures-util", "futures-util",
@@ -1702,9 +1702,9 @@ dependencies = [
[[package]] [[package]]
name = "wasm-bindgen" name = "wasm-bindgen"
version = "0.2.121" version = "0.2.122"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49ace1d07c165b0864824eee619580c4689389afa9dc9ed3a4c75040d82e6790" checksum = "3ed04576f974d2b2fba0f38c51dbc5518011e38c36bf1143164be765528fd409"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"once_cell", "once_cell",
@@ -1715,9 +1715,9 @@ dependencies = [
[[package]] [[package]]
name = "wasm-bindgen-futures" name = "wasm-bindgen-futures"
version = "0.4.71" version = "0.4.72"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "96492d0d3ffba25305a7dc88720d250b1401d7edca02cc3bcd50633b424673b8" checksum = "9473dbd2991ae90b6291c3c32c30c6187ac49aa32f9905d1cce280ec1e110b0f"
dependencies = [ dependencies = [
"js-sys", "js-sys",
"wasm-bindgen", "wasm-bindgen",
@@ -1725,9 +1725,9 @@ dependencies = [
[[package]] [[package]]
name = "wasm-bindgen-macro" name = "wasm-bindgen-macro"
version = "0.2.121" version = "0.2.122"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e68e6f4afd367a562002c05637acb8578ff2dea1943df76afb9e83d177c8578" checksum = "916151b09da36bd82f6615cbf3a419e2f0ba23a03c6160e8e92eb6bd4aa1dec6"
dependencies = [ dependencies = [
"quote", "quote",
"wasm-bindgen-macro-support", "wasm-bindgen-macro-support",
@@ -1735,9 +1735,9 @@ dependencies = [
[[package]] [[package]]
name = "wasm-bindgen-macro-support" name = "wasm-bindgen-macro-support"
version = "0.2.121" version = "0.2.122"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d95a9ec35c64b2a7cb35d3fead40c4238d0940c86d107136999567a4703259f2" checksum = "299047362ccbfce148b67ab7e73349f77748e00c8296f9542adfad2ad82c5c5e"
dependencies = [ dependencies = [
"bumpalo", "bumpalo",
"proc-macro2", "proc-macro2",
@@ -1748,9 +1748,9 @@ dependencies = [
[[package]] [[package]]
name = "wasm-bindgen-shared" name = "wasm-bindgen-shared"
version = "0.2.121" version = "0.2.122"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c4e0100b01e9f0d03189a92b96772a1fb998639d981193d7dbab487302513441" checksum = "9a929b2c61f11ba3e9bc35b50c1f25cb38e0e892c0c231ae2b8cf78d5dad4437"
dependencies = [ dependencies = [
"unicode-ident", "unicode-ident",
] ]
@@ -1770,9 +1770,9 @@ dependencies = [
[[package]] [[package]]
name = "web-sys" name = "web-sys"
version = "0.3.98" version = "0.3.99"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4b572dff8bcf38bad0fa19729c89bb5748b2b9b1d8be70cf90df697e3a8f32aa" checksum = "6d621441cfc37b84979402712047321980c178f299193a3589d05b99e8763436"
dependencies = [ dependencies = [
"js-sys", "js-sys",
"wasm-bindgen", "wasm-bindgen",
+1 -3
View File
@@ -7,9 +7,7 @@ mod rdf_source;
mod resource; mod resource;
pub mod traverse; pub mod traverse;
pub mod vocab; pub mod vocab;
pub mod model;
#[cfg(feature = "keyed")]
pub mod keyed;
pub use http; pub use http;
pub use oxigraph; pub use oxigraph;
+16
View File
@@ -0,0 +1,16 @@
use oxigraph::model::{Dataset, NamedNodeRef, NamedOrBlankNodeRef, TermRef};
use oxigraph::model::vocab::rdf;
use crate::RdfSource;
impl RdfSource<Dataset> {
/// Return all the classes associated with this document.
pub fn classes(&self) -> impl Iterator<Item = NamedNodeRef<'_>> {
let subject = NamedOrBlankNodeRef::NamedNode(NamedNodeRef::new_unchecked(self.origin.as_str()));
self.dataset
.quads_for_pattern(Some(subject), Some(rdf::TYPE), None, None)
.filter_map(|quad| match quad.object {
TermRef::NamedNode(node) => Some(node),
_ => None,
})
}
}
@@ -1,11 +1,21 @@
use oxigraph::model::{Quad, QuadRef}; use oxigraph::model::{Quad, QuadRef};
use slotmap::{SecondaryMap, SlotMap, new_key_type}; use slotmap::{SecondaryMap, SlotMap, new_key_type};
new_key_type! { pub struct QuadKey; } new_key_type! {
/// A type which uniquely identifies a quad.
pub struct QuadKey;
}
/// A set of quads stored in a [`SlotMap`].
///
/// This exists as a convenience for those who want to uniquely identify a quad and associate
/// application-specific data with it.
#[derive(Clone, Debug, Default)] #[derive(Clone, Debug, Default)]
pub struct KeyedDataset<T> { pub struct KeyedDataset<T> {
/// The underlying SlotMap.
pub quads: SlotMap<QuadKey, Quad>, pub quads: SlotMap<QuadKey, Quad>,
/// Application-specific information to be associated with the quads.
pub associated_data: SecondaryMap<QuadKey, T>, pub associated_data: SecondaryMap<QuadKey, T>,
} }
+6
View File
@@ -0,0 +1,6 @@
mod dataset;
#[cfg(feature = "keyed")]
mod keyed_dataset;
#[cfg(feature = "keyed")]
pub use keyed_dataset::{KeyedDataset, QuadKey};