public static Triple ToTriple(IConceptManager conceptManager, Item item, ItemLink itemLink) { var g = new Graph(); g.NamespaceMap.AddNamespace("sitecore", new Uri("sitecore:")); //g.NamespaceMap.AddNamespace("http", new Uri("http:")); IUriNode sub = g.CreateUriNode(ItemToUri(item)); IUriNode obj; if (itemLink.GetTargetItem() == null) { //Broken link creation obj = g.CreateUriNode(BrokenLinkUri); } else { obj = g.CreateUriNode(ItemToUri(itemLink.GetTargetItem())); } IUriNode predicate = conceptManager.GetPredicate(sub, obj); //Add Source Field Id to predicate IUriNode predicateWithFieldId = g.CreateUriNode(new Uri(predicate.Uri + "#" + itemLink.SourceFieldID)); return(new Triple(sub, Tools.CopyNode(predicateWithFieldId, g), obj)); }
public override void Relink(ItemLink link, Item newLink) { Item targetItem = link.GetTargetItem(); if (targetItem == null) { return; } ID templateId = targetItem.TemplateID; if (templateId != newLink.TemplateID) { throw new Exception(Translate.Text("Cannot relink to an item with a different template.")); } string elementType = GetElementType(templateId); if (elementType == null) { return; } XElement xelement = Find(elementType, targetItem.ID, targetItem.Name); if (xelement != null) { xelement.SetAttributeValue("id", newLink.ID.ToString()); xelement.SetAttributeValue((elementType == "campaign" ? "title" : "name"), newLink.Name); } AcceptChanges(); }
public void RemoveLinksForItem(Item item, ItemLink link) { var parser = new SparqlQueryParser(); var subjectUri = SitecoreTripleHelper.ItemToUri(item); var objectUri = SitecoreTripleHelper.ItemToUri(link.GetTargetItem()); var query = SitecoreTripleHelper.StringToSparqlQuery(String.Format(TriplesBySubjectObjectFormat, subjectUri, objectUri)); var triplesToDelete = TripleQuery(query); DeleteTriples(triplesToDelete); }
public static void RemoveLinksForItem(Item item, ItemLink link) { var g = LinkedDataManager.ReadGraph(); var items = g.GetTriplesWithSubjectObject( g.CreateUriNode(LinkedDataManager.ItemToUri(item)), g.CreateLiteralNode(LinkedDataManager.ItemToUri(link.GetTargetItem()))); if (items != null && items.Any()) { g.Retract(items.First()); WriteGraph(g); } }
public static Triple ToTriple(IGraph g, Item item, ItemLink itemLink) { IUriNode sub = g.CreateUriNode(ItemToUri(item)); IConceptManager conceptManager = new StubConceptManager(); var matchingConcepts = conceptManager.GetMatchingConcepts(item, itemLink.GetTargetItem()); IUriNode predicate; if (matchingConcepts != null && matchingConcepts.Any()) { predicate = g.CreateUriNode(matchingConcepts.First().Predicate); } else { predicate = g.CreateUriNode(UriFactory.Create("http://example.org/says")); } ILiteralNode obj = g.CreateLiteralNode(ItemToUri(itemLink.GetTargetItem())); return(new Triple(sub, predicate, obj)); }
public override void UpdateLink(ItemLink itemLink) { Item targetItem = itemLink.GetTargetItem(); if (targetItem == null || !(this.TargetID == targetItem.ID)) { return; } if (!this.IsInternal) { return; } this.Url = targetItem.Paths.ContentPath; }
public override void RemoveLink(ItemLink itemLink) { Item targetItem = itemLink.GetTargetItem(); if (targetItem == null) { return; } string elementType = GetElementType(targetItem.TemplateID); if (elementType == null) { return; } XElement xelement = Find(elementType, targetItem.ID, targetItem.Name); if (xelement == null) { return; } xelement.Remove(); AcceptChanges(); }
public void Update(Item item, ItemLink link) { if (FilterItem(item)) { return; } var targetItem = link.GetTargetItem(); if (targetItem != null) { if (FilterItem(targetItem)) { return; } var sourceNode = _graph.ReadNode(ItemHelper.ItemToUri(item)); if (sourceNode == null) { sourceNode = _graph.CreateNode(new SitecoreNode() { Uri = ItemHelper.ItemToUri(item), Name = item.Name }); } var targetNode = _graph.ReadNode(ItemHelper.ItemToUri(link.GetTargetItem())); if (targetNode == null) { targetNode = _graph.CreateNode(new SitecoreNode() { Uri = ItemHelper.ItemToUri(targetItem), Name = targetItem.Name }); } var relationship = _relationshipManager.GetRelationship(sourceNode.Uri, targetNode.Uri); _graph.CreateRelationship(sourceNode, relationship, targetNode); } }