/// <summary>
/// Delete triple with specified parameters.
/// </summary>
/// <param name="subjectName">Subject</param>
/// <param name="predicateName">Predicate</param>
/// <param name="objectName">Object</param>
/// <returns>Returns 'True' if operation completed succeful, 'False' otherwise.</returns>
public bool DeleteTriplet(TripleName subjectName, TripleName predicateName, TripleName objectName)
{
subjectName = EnsurePrefix(subjectName);
predicateName = EnsurePrefix(predicateName);
objectName = EnsurePrefix(objectName);
var shortSubjectStr = subjectName.ToString();
var shortPredicateStr = predicateName.ToString();
var shortObjectStr = objectName.ToString();
var tr = Triples.Where(t => t.Subject == shortSubjectStr && t.Predicate == shortPredicateStr).Include(o => o.Objects).FirstOrDefault();
if (tr != null)
{
var obj = tr.Objects.FirstOrDefault(o => o.Object == shortObjectStr);
if (obj != null)
{
TripleObjects.Remove(TripleObjects.Find(obj.TripleObject_Id));
if (!tr.Objects.Any())
{
Triples.Remove(tr);
}
SaveChanges();
return(true);
}
}
return(false);
}