Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

crane.url = "github:ipetkov/crane";

fenix.url = "github:nix-community/fenix/80b1a19a713e2558c411f3259fecb1edd4b5b327";
fenix.url = "github:nix-community/fenix/380f1969f440e683333af5746caac76811b4a1a8";
fenix.inputs.nixpkgs.follows = "nixpkgs";
};

Expand Down
25 changes: 24 additions & 1 deletion lib/maplib/src/model.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ use std::fs;
use std::io::Write;
use std::path::Path;
use std::sync::Arc;
use templates::as_rdf::templates_to_triples;
use templates::ast::{ConstantTermOrList, PType, Template};
use templates::dataset::TemplateDataset;
use templates::document::document_from_str;
Expand All @@ -30,7 +31,7 @@ use triplestore::{IndexingOptions, NewTriples, Triplestore};

use chrontext::engine::{ChrontextSettings, Engine};
use datalog::ast::DatalogRuleset;
use representation::constants::{FX_PREFIX, FX_PREFIX_IRI, XYZ_PREFIX, XYZ_PREFIX_IRI};
use representation::constants::{FX_PREFIX, FX_PREFIX_IRI, OTTR_TRIPLE, XYZ_PREFIX, XYZ_PREFIX_IRI};
use representation::dataset::NamedGraph;
use representation::prefixes::get_default_prefixes;
use tracing::instrument;
Expand Down Expand Up @@ -338,6 +339,28 @@ impl Model {
.map_err(MaplibError::TriplestoreError)
}

/// The templates held by this model, excluding the built-in `ottr:Triple` primitive that
/// `TemplateDataset` injects as the base case every template expands to.
pub fn get_templates(&self) -> Vec<&Template> {
self.template_dataset
.templates
.iter()
.filter(|t| t.signature.iri.as_str() != OTTR_TRIPLE)
.collect()
}

/// Materialize the model's OTTR templates into `graph` as RDF using the flattened maplib
/// template vocabulary (prefix `mtpl`). Triples are added alongside any existing content of
/// the graph.
#[instrument(skip_all)]
pub fn templates_to_graph(&mut self, graph: &NamedGraph) -> Result<(), MaplibError> {
let triples = templates_to_triples(&self.template_dataset.templates);
self.triplestore
.add_triples(triples, graph, false)
.map_err(MaplibError::TriplestoreError)?;
Ok(())
}

#[instrument(skip_all)]
pub fn query(
&mut self,
Expand Down
4 changes: 4 additions & 0 deletions lib/representation/src/constants.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@ pub const DEFAULT_PREFIX_IRI: &str = "urn:maplib_default:";
pub const OTTR_IRI: &str = "http://ns.ottr.xyz/0.4/IRI";
pub const OTTR_BLANK_NODE: &str = "http://ns.ottr.xyz/0.4/BlankNode";

// Flattened maplib vocabulary used to expose OTTR templates as a queryable named graph.
pub const MAPLIB_TEMPLATE_PREFIX: &str = "mtpl";
pub const MAPLIB_TEMPLATE_PREFIX_IRI: &str = "https://datatreehouse.github.io/maplib/vocab#";

pub const OWL_PREFIX: &str = "owl";
pub const OWL_PREFIX_IRI: &str = "http://www.w3.org/2002/07/owl#";

Expand Down
8 changes: 5 additions & 3 deletions lib/representation/src/prefixes.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
use crate::constants::{
DEFAULT_PREFIX, DEFAULT_PREFIX_IRI, FOAF_PREFIX, FOAF_PREFIX_IRI, OTTR_PREFIX, OTTR_PREFIX_IRI,
OWL_PREFIX, OWL_PREFIX_IRI, RDFS_PREFIX, RDFS_PREFIX_IRI, RDF_PREFIX, RDF_PREFIX_IRI,
SHACL_PREFIX, SHACL_PREFIX_IRI, XSD_PREFIX, XSD_PREFIX_IRI,
DEFAULT_PREFIX, DEFAULT_PREFIX_IRI, FOAF_PREFIX, FOAF_PREFIX_IRI, MAPLIB_TEMPLATE_PREFIX,
MAPLIB_TEMPLATE_PREFIX_IRI, OTTR_PREFIX, OTTR_PREFIX_IRI, OWL_PREFIX, OWL_PREFIX_IRI,
RDFS_PREFIX, RDFS_PREFIX_IRI, RDF_PREFIX, RDF_PREFIX_IRI, SHACL_PREFIX, SHACL_PREFIX_IRI,
XSD_PREFIX, XSD_PREFIX_IRI,
};
use oxrdf::NamedNode;
use std::collections::HashMap;
Expand All @@ -16,6 +17,7 @@ pub fn get_default_prefixes() -> HashMap<String, NamedNode> {
(SHACL_PREFIX, SHACL_PREFIX_IRI),
(DEFAULT_PREFIX, DEFAULT_PREFIX_IRI),
(FOAF_PREFIX, FOAF_PREFIX_IRI),
(MAPLIB_TEMPLATE_PREFIX, MAPLIB_TEMPLATE_PREFIX_IRI),
];
HashMap::from_iter(
predefined
Expand Down
Loading
Loading