milestone 5.aj RDF commit node

master
Niko PLP 2 weeks ago
parent 24521c1009
commit da0f550a79
  1. 4
      ng-net/src/app_protocol.rs
  2. 4
      ng-sdk-js/app-node/index.js
  3. 7
      ng-verifier/src/commits/transaction.rs
  4. 32
      ng-verifier/src/types.rs

@ -318,6 +318,10 @@ impl NuriV0 {
format!("{DID_PREFIX}:n:{token}")
}
pub fn tokenized_commit(repo_id: &RepoId, commit_id: &ObjectId) -> String {
format!("{DID_PREFIX}:o:{repo_id}:t:{commit_id}")
}
pub fn locator(locator: &Locator) -> String {
format!("l:{locator}")
}

@ -61,9 +61,9 @@ ng.init_headless(config).then( async() => {
// }
// console.log(history.swimlane_state);
await ng.sparql_update(session.session_id, "INSERT DATA { <did:ng:o:FwRgrwtOhli54mRT6xi8J5ZK7X4L7L86lpbwhNVmgbsA> <did:ng:i> <did:ng:j> }");
await ng.sparql_update(session.session_id, "INSERT DATA { <did:ng:_> <did:ng:i> <did:ng:j3> }");
sparql_result = await ng.sparql_query(session.session_id, "CONSTRUCT { ?s ?p ?o } WHERE { GRAPH <"+private_store+"> { ?s ?p ?o } }", base);
sparql_result = await ng.sparql_query(session.session_id, "CONSTRUCT { ?s ?p ?o } WHERE { ?s ?p ?o }");
console.log("******** CONSTRUCT")
for (const r of sparql_result) console.log(r.subject.value, r.predicate.value, r.object.value);

@ -266,6 +266,8 @@ impl Verifier {
let commit_info: CommitInfoJs = (&commit.as_info(repo)).into();
if body.graph.is_some() {
let mut transaction = body.graph.take().unwrap();
transaction.tokenize_with_commit_id(commit_id, repo_id);
let info = BranchUpdateInfo {
branch_id: *branch_id,
branch_type: branch.branch_type.clone(),
@ -275,7 +277,7 @@ impl Verifier {
overlay_id: store.overlay_id,
previous_heads: commit.direct_causal_past_ids(),
commit_id,
transaction: body.graph.take().unwrap(),
transaction,
commit_info,
};
self.update_graph(vec![info]).await?;
@ -497,7 +499,8 @@ impl Verifier {
let repo = self.get_repo(&repo_id, &store_repo)?;
let commit_info: CommitInfoJs = (&commit.as_info(repo)).into();
let graph_update = transac.graph.take().unwrap();
let mut graph_update = transac.graph.take().unwrap();
graph_update.tokenize_with_commit_id(commit.id().unwrap(), &repo_id);
let info = BranchUpdateInfo {
branch_id,

@ -20,7 +20,9 @@ use serde::{Deserialize, Serialize};
use lazy_static::lazy_static;
use ng_net::{app_protocol::*, types::*};
use ng_oxigraph::oxrdf::{GraphName, GraphNameRef, NamedNode, Quad, Triple, TripleRef};
use ng_oxigraph::oxrdf::{
GraphName, GraphNameRef, NamedNode, Quad, Subject, Term, Triple, TripleRef,
};
use ng_repo::{errors::*, types::*};
pub const NG_ONTOLOGY: &str = "did:ng:x:ng#";
@ -41,6 +43,8 @@ pub struct GraphTransaction {
pub removes: Vec<Triple>,
}
const TOKENIZED_COMMIT: &str = "did:ng:_";
impl GraphTransaction {
pub(crate) fn as_patch(&self) -> GraphPatch {
GraphPatch {
@ -48,6 +52,32 @@ impl GraphTransaction {
removes: serde_bare::to_vec(&self.removes).unwrap(),
}
}
pub(crate) fn tokenize_with_commit_id(&mut self, commit_id: ObjectId, repo_id: &RepoId) {
for triple in self.inserts.iter_mut() {
if let Subject::NamedNode(nn) = &triple.subject {
if nn.as_str().starts_with(TOKENIZED_COMMIT) {
let mut str = nn.as_string().clone();
let new_iri = NuriV0::tokenized_commit(repo_id, &commit_id);
str.replace_range(..8, &new_iri);
triple.subject = NamedNode::new_unchecked(str).into();
}
}
if triple.predicate.as_str().starts_with(TOKENIZED_COMMIT) {
let mut str = triple.predicate.as_string().clone();
let new_iri = NuriV0::tokenized_commit(repo_id, &commit_id);
str.replace_range(..8, &new_iri);
triple.predicate = NamedNode::new_unchecked(str);
}
if let Term::NamedNode(nn) = &triple.object {
if nn.as_str().starts_with(TOKENIZED_COMMIT) {
let mut str = nn.as_string().clone();
let new_iri = NuriV0::tokenized_commit(repo_id, &commit_id);
str.replace_range(..8, &new_iri);
triple.object = NamedNode::new_unchecked(str).into();
}
}
}
}
}
#[derive(Clone, Debug, Serialize, Deserialize)]

Loading…
Cancel
Save