Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 4
0
        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);
            }
        }
Ejemplo n.º 5
0
        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));
        }
Ejemplo n.º 6
0
        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;
        }
Ejemplo n.º 7
0
        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();
        }
Ejemplo n.º 8
0
        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);
            }

            
        }