This commit is contained in:
2026-08-13 22:44:37 -04:00
parent a723b52191
commit 8dcaa5b61f
5 changed files with 244 additions and 181 deletions
+35 -5
View File
@@ -17,8 +17,10 @@ use ldp::middleware::BasicAuthMiddleware;
use ldp::reqwest::Client;
use ldp::reqwest_middleware::ClientBuilder;
use ldp::traverse::Traverse;
use oxigraph::model::Dataset;
use tracing::{debug_span, error, field};
use oxigraph::io::{RdfFormat, RdfParser, RdfSerializer};
use oxigraph::model::{Dataset, Graph, Triple, TripleRef};
use tonic::Status;
use tracing::{debug, debug_span, error, field, Instrument};
use tracing_subscriber::fmt::format::FmtSpan;
use tracing_subscriber::layer::SubscriberExt;
use tracing_subscriber::util::SubscriberInitExt;
@@ -56,7 +58,7 @@ fn main() -> color_eyre::Result<()> {
} else { None };
let mut request = OntologyQueryRequest::default();
request.sparql_query = raw_query;
request.sparql_query = Some(raw_query);
request.turtle = graph;
request.prefixes = HashMap::from_iter(gl_graph::PREFIXES.iter().map(|(name, iri)| (name.clone(), iri.clone())));
request.base = args.base.clone();
@@ -122,8 +124,36 @@ fn main() -> color_eyre::Result<()> {
}
}
let span = debug_span!("Index Repository", rdf_sources = field::Empty, documents = field::Empty).entered();
span.record("rdf_sources", rdf_source_count);
let span = debug_span!("Index Repository", rdf_sources = rdf_source_count, triples = field::Empty, documents = field::Empty);
let triple_count = async {
let mut client = OntologyClient::connect("http://[::1]:3000").await.unwrap();
let mut request = OntologyQueryRequest::default();
let mut output_buffer = Vec::new();
let mut serializer = RdfSerializer::from_format(RdfFormat::Turtle)
.for_writer(output_buffer);
for quad in &dataset {
serializer.serialize_triple(TripleRef::from(quad))?;
}
output_buffer = serializer.finish()?;
let turtle = String::from_utf8_lossy(&output_buffer).to_string();
request.sparql_query = None;
request.turtle = Some(turtle);
request.prefixes = HashMap::new();
request.base = None;
let response = client.query(request).await.unwrap();
let graph_with_inferences = RdfParser::from_format(RdfFormat::Turtle)
.for_slice(&response.get_ref().results)
.filter_map(Result::ok)
.map(Triple::from)
.collect::<Graph>();
Ok::<usize, crate::error::Error>(graph_with_inferences.len())
}.instrument(span.clone()).await?;
span.record("triples", triple_count);
Ok::<_, crate::error::Error>(writer)
})?;