/// <summary> /// Checks if the store contains the given quadruple /// </summary> public virtual Boolean ContainsQuadruple(RDFQuadruple quadruple) { if (quadruple != null) { if (quadruple.TripleFlavor == RDFModelEnums.RDFTripleFlavors.SPO) { return((this.SelectQuadruples((RDFContext)quadruple.Context, (RDFResource)quadruple.Subject, (RDFResource)quadruple.Predicate, (RDFResource)quadruple.Object, null)).QuadruplesCount > 0); } else { return((this.SelectQuadruples((RDFContext)quadruple.Context, (RDFResource)quadruple.Subject, (RDFResource)quadruple.Predicate, null, (RDFLiteral)quadruple.Object)).QuadruplesCount > 0); } } return(false); }
/// <summary> /// Removes the given quadruples from the store /// </summary> public abstract RDFStore RemoveQuadruple(RDFQuadruple quadruple);
/// <summary> /// Adds the given quadruple to the store, avoiding duplicate insertions /// </summary> public abstract RDFStore AddQuadruple(RDFQuadruple quadruple);
/// <summary> /// Adds the given quadruple to the CSPOL index /// </summary> internal RDFStoreIndex AddIndex(RDFQuadruple quadruple) { if (quadruple != null) { //Context if (!this.Contexts.ContainsKey(quadruple.Context.PatternMemberID)) { this.Contexts.Add(quadruple.Context.PatternMemberID, new HashSet <Int64>() { quadruple.QuadrupleID }); } else { if (!this.Contexts[quadruple.Context.PatternMemberID].Contains(quadruple.QuadrupleID)) { this.Contexts[quadruple.Context.PatternMemberID].Add(quadruple.QuadrupleID); } } //Subject if (!this.Subjects.ContainsKey(quadruple.Subject.PatternMemberID)) { this.Subjects.Add(quadruple.Subject.PatternMemberID, new HashSet <Int64>() { quadruple.QuadrupleID }); } else { if (!this.Subjects[quadruple.Subject.PatternMemberID].Contains(quadruple.QuadrupleID)) { this.Subjects[quadruple.Subject.PatternMemberID].Add(quadruple.QuadrupleID); } } //Predicate if (!this.Predicates.ContainsKey(quadruple.Predicate.PatternMemberID)) { this.Predicates.Add(quadruple.Predicate.PatternMemberID, new HashSet <Int64>() { quadruple.QuadrupleID }); } else { if (!this.Predicates[quadruple.Predicate.PatternMemberID].Contains(quadruple.QuadrupleID)) { this.Predicates[quadruple.Predicate.PatternMemberID].Add(quadruple.QuadrupleID); } } //Object if (quadruple.TripleFlavor == RDFModelEnums.RDFTripleFlavors.SPO) { if (!this.Objects.ContainsKey(quadruple.Object.PatternMemberID)) { this.Objects.Add(quadruple.Object.PatternMemberID, new HashSet <Int64>() { quadruple.QuadrupleID }); } else { if (!this.Objects[quadruple.Object.PatternMemberID].Contains(quadruple.QuadrupleID)) { this.Objects[quadruple.Object.PatternMemberID].Add(quadruple.QuadrupleID); } } } //Literal else { if (!this.Literals.ContainsKey(quadruple.Object.PatternMemberID)) { this.Literals.Add(quadruple.Object.PatternMemberID, new HashSet <Int64>() { quadruple.QuadrupleID }); } else { if (!this.Literals[quadruple.Object.PatternMemberID].Contains(quadruple.QuadrupleID)) { this.Literals[quadruple.Object.PatternMemberID].Add(quadruple.QuadrupleID); } } } } return(this); }
/// <summary> /// Removes the given quadruple from the CSPOL index /// </summary> internal RDFStoreIndex RemoveIndex(RDFQuadruple quadruple) { if (quadruple != null) { //Context if (this.Contexts.ContainsKey(quadruple.Context.PatternMemberID)) { if (this.Contexts[quadruple.Context.PatternMemberID].Contains(quadruple.QuadrupleID)) { this.Contexts[quadruple.Context.PatternMemberID].Remove(quadruple.QuadrupleID); if (this.Contexts[quadruple.Context.PatternMemberID].Count == 0) { this.Contexts.Remove(quadruple.Context.PatternMemberID); } } } //Subject if (this.Subjects.ContainsKey(quadruple.Subject.PatternMemberID)) { if (this.Subjects[quadruple.Subject.PatternMemberID].Contains(quadruple.QuadrupleID)) { this.Subjects[quadruple.Subject.PatternMemberID].Remove(quadruple.QuadrupleID); if (this.Subjects[quadruple.Subject.PatternMemberID].Count == 0) { this.Subjects.Remove(quadruple.Subject.PatternMemberID); } } } //Predicate if (this.Predicates.ContainsKey(quadruple.Predicate.PatternMemberID)) { if (this.Predicates[quadruple.Predicate.PatternMemberID].Contains(quadruple.QuadrupleID)) { this.Predicates[quadruple.Predicate.PatternMemberID].Remove(quadruple.QuadrupleID); if (this.Predicates[quadruple.Predicate.PatternMemberID].Count == 0) { this.Predicates.Remove(quadruple.Predicate.PatternMemberID); } } } //Object if (quadruple.TripleFlavor == RDFModelEnums.RDFTripleFlavors.SPO) { if (this.Objects.ContainsKey(quadruple.Object.PatternMemberID)) { if (this.Objects[quadruple.Object.PatternMemberID].Contains(quadruple.QuadrupleID)) { this.Objects[quadruple.Object.PatternMemberID].Remove(quadruple.QuadrupleID); if (this.Objects[quadruple.Object.PatternMemberID].Count == 0) { this.Objects.Remove(quadruple.Object.PatternMemberID); } } } } //Literal else { if (this.Literals.ContainsKey(quadruple.Object.PatternMemberID)) { if (this.Literals[quadruple.Object.PatternMemberID].Contains(quadruple.QuadrupleID)) { this.Literals[quadruple.Object.PatternMemberID].Remove(quadruple.QuadrupleID); if (this.Literals[quadruple.Object.PatternMemberID].Count == 0) { this.Literals.Remove(quadruple.Object.PatternMemberID); } } } } } return(this); }
/// <summary> /// Checks if the store contains the given quadruple /// </summary> public abstract Boolean ContainsQuadruple(RDFQuadruple quadruple);