public override string Evaluate(RequestProcess process) { // Does the triple already exist? var clause = new Clause(this.Subject, this.Predicate, this.Object, true); clause.Evaluate(process); if (string.IsNullOrWhiteSpace(clause.subj) || string.IsNullOrWhiteSpace(clause.pred) || string.IsNullOrWhiteSpace(clause.obj)) { process.Log(LogLevel.Diagnostic, $"In element <addtriple>: Could not add triple with missing elements. Subject: {clause.subj} Predicate: {clause.pred} Object: {clause.obj}"); return(process.Bot.Config.DefaultTriple); } var triples = process.Bot.Triples.Match(clause); if (triples.Count != 0) { process.Log(LogLevel.Diagnostic, $"In element <addtriple>: Triple already exists at key {triples.First()}. Subject: {clause.subj} Predicate: {clause.pred} Object: {clause.obj}"); return(triples.First().ToString()); } // Add the triple. int key = process.Bot.Triples.Add(clause.subj, clause.pred, clause.obj); process.Log(LogLevel.Diagnostic, $"In element <addtriple>: Added a new triple with key {key}. Subject: {clause.subj} Predicate: {clause.pred} Object: {clause.obj}"); return(key.ToString()); }
public override string Evaluate(RequestProcess process) { var clause = new Clause(this.Subject, this.Predicate, this.Object, true); clause.Evaluate(process); if (string.IsNullOrWhiteSpace(clause.subj) || string.IsNullOrWhiteSpace(clause.pred) || string.IsNullOrWhiteSpace(clause.obj)) { process.Log(LogLevel.Diagnostic, $"In element <deletetriple>: Could not delete triple with missing elements. Subject: {clause.subj} Predicate: {clause.pred} Object: {clause.obj}"); return(process.Bot.Config.DefaultTriple); } var triples = process.Bot.Triples.Match(clause); if (triples.Count == 0) { process.Log(LogLevel.Diagnostic, $"In element <deletetriple>: No such triple exists. Subject: {clause.subj} Predicate: {clause.pred} Object: {clause.obj}"); return(process.Bot.Config.DefaultTriple); } var index = triples.Single(); process.Bot.Triples.Remove(index); process.Log(LogLevel.Diagnostic, $"In element <deletetriple>: Deleted the triple with key {index}. Subject: {clause.subj} Predicate: {clause.pred} Object: {clause.obj}"); return(index.ToString()); }