public bool ShouldFilter(Triple triple)
        {
            var subjectItem = SitecoreTripleHelper.UriToItem(triple.Subject.ToString());

            bool shouldFilter = false;

            if (subjectItem != null)
            {
                var subjectPath = subjectItem.Paths.FullPath.ToLower();

                shouldFilter = _systemFolderPaths.Any(subjectPath.StartsWith);
            }

            if (shouldFilter)
            {
                return(true);
            }

            var objectItem = SitecoreTripleHelper.UriToItem(triple.Object.ToString());

            if (objectItem != null)
            {
                var objectPath = objectItem.Paths.FullPath.ToLower();

                shouldFilter = _systemFolderPaths.Any(objectPath.StartsWith);
            }

            return(shouldFilter);
        }
        public override ItemLink[] GetBrokenLinks(Database database)
        {
            Assert.ArgumentNotNull((object)database, "database");

            var manager = _factory.GetContextLinkDatabaseDataManager(database);

            var query = @"CONSTRUCT {{ ?s ?p <{0}> }} WHERE {{ ?s ?p <{0}> }}";

            query = String.Format(query, SitecoreTripleHelper.BrokenLinkUri.ToString());

            var triples = manager.TripleQuery(query);

            var links = new List <ItemLink>();

            foreach (var triple in triples)
            {
                var sourceItem = SitecoreTripleHelper.UriToItem(triple.Subject.ToString());

                if (sourceItem != null)
                {
                    links.Add(new ItemLink(sourceItem.Database.Name, sourceItem.ID, sourceItem.Language, sourceItem.Version, SitecoreTripleHelper.GetFieldIdFromPredicate(triple.Predicate), sourceItem.Database.Name, new ID(Guid.Empty), sourceItem.Language, sourceItem.Version, string.Empty));
                }

                Job job = Context.Job;
                if (job != null && job.Category == "GetBrokenLinks")
                {
                    ++job.Status.Processed;
                }
                LinkCounters.DataRead.Increment();
                DataCounters.PhysicalReads.Increment();
            }


            return(links.ToArray());
        }
Example #3
0
        private IUriNode GetPredicate(string subUri, string objUri)
        {
            var g = new Graph();

            var predicate = g.CreateUriNode(UriFactory.Create("http://sitecore.net/linkedto"));

            var sourceItem = SitecoreTripleHelper.UriToItem(subUri);
            var targetItem = SitecoreTripleHelper.UriToItem(objUri);

            if (sourceItem != null && targetItem != null)
            {
                var sourceTemplateName = sourceItem.TemplateName;
                var targetTemplateName = targetItem.TemplateName;

                foreach (var baseConcept in _concepts)
                {
                    if (baseConcept.IsMatch(sourceTemplateName, targetTemplateName))
                    {
                        predicate = g.CreateUriNode(baseConcept.ConceptUri);
                    }
                }
            }

            return(predicate);
        }
        public IEnumerable <Triple> GetItemTriplesBySubjectPredicate(Item item, string predicate)
        {
            var itemUri = SitecoreTripleHelper.ItemToUri(item);

            var query = SitecoreTripleHelper.StringToSparqlQuery(String.Format(TriplesBySubjectPredicateFormat, itemUri, predicate));

            return(TripleQuery(query));
        }
        public IEnumerable <Triple> GetItemTriplesByObject(Item item)
        {
            var itemUri = SitecoreTripleHelper.ItemToUri(item);

            var query = SitecoreTripleHelper.StringToSparqlQuery(String.Format(TriplesByObjectFormat, itemUri));

            return(TripleQuery(query));
        }
Example #6
0
        protected void Page_Load(object sender, EventArgs e)
        {
            var sublayout      = Parent as Sitecore.Web.UI.WebControls.Sublayout;
            var dataSourceItem = Sitecore.Context.Database.GetItem(sublayout.DataSource);

            var factory = DependencyResolver.Instance.Resolve <SitecoreManagerFactory>();
            var manager = factory.GetContextWebDatabaseDataManager();

            //string rawParameters = Attributes["sc_parameters"];
            //var parameters = Sitecore.Web.WebUtil.ParseUrlParameters(rawParameters);
            var title       = dataSourceItem.Fields["Title"].Value;
            var sparqlQuery = dataSourceItem.Fields["SparqlQuery"].Value;

            litTitle.Text = title;

            SitecoreTriples = new List <SitecoreTriple>();

            if (!string.IsNullOrEmpty(sparqlQuery))
            {
                //Format the query
                var formattedQuery = String.Format(sparqlQuery,
                                                   SitecoreTripleHelper.ItemToUri(Sitecore.Context.Item));

                var sqp   = new SparqlQueryParser();
                var query = sqp.ParseFromString(formattedQuery);

                if (query.QueryType == SparqlQueryType.Construct)
                {
                    var triples = manager.TripleQuery(query);

                    SitecoreTriples = triples.ToSitecoreTriples();
                }
                else if (query.QueryType == SparqlQueryType.Select || query.QueryType == SparqlQueryType.SelectAll)
                {
                    var resultSet = manager.ResultSetQuery(query);

                    foreach (SparqlResult result in resultSet)
                    {
                        foreach (var variable in result.ToList())
                        {
                            var sitecoreNode = variable.Value.ToSitecoreNode();

                            if (sitecoreNode != null)
                            {
                                litSparqlQueryResult.Text += string.Format("Key: {0} Value: <a href=\"{1}\">{2}</a><br/>",
                                                                           variable.Key, LinkManager.GetItemUrl(sitecoreNode.Item), sitecoreNode.Item.Name);
                            }
                            else
                            {
                                litSparqlQueryResult.Text += string.Format("Key: {0} Value: {1}<br/>",
                                                                           variable.Key, variable.Value.ToString());
                            }
                        }
                    }
                }
            }
        }
        public Triple FormatTriple(Triple triple)
        {
            var g = new Graph();

            IUriNode sub  = g.CreateUriNode(new Uri(triple.Subject.ToString()));
            IUriNode pred = g.CreateUriNode(new Uri(SitecoreTripleHelper.RemoveLinkFieldFromPredicate(triple.Predicate)));
            IUriNode obj  = g.CreateUriNode(new Uri(triple.Object.ToString()));

            triple = new Triple(sub, pred, obj);

            return(triple);
        }
        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 override ItemLink[] GetReferences(Item item)
        {
            Assert.ArgumentNotNull((object)item, "item");
            List <ItemLink> list;

            lock (this.locks.GetLock((object)item.ID))
            {
                var items = _factory.GetContextLinkDatabaseDataManager(item).GetItemTriplesBySubject(item);

                list = SitecoreTripleHelper.TriplesToItemLinks(items);
            }
            return(list.ToArray());
        }
        public override ItemLink[] GetItemVersionReferrers(Item version)
        {
            Assert.ArgumentNotNull((object)version, "version");
            List <ItemLink> list;

            lock (this.locks.GetLock((object)version.ID))
            {
                var items = _factory.GetContextLinkDatabaseDataManager(version).GetItemTriplesByObject(version);

                list = SitecoreTripleHelper.TriplesToItemLinks(items);
            }
            return(list.ToArray());
        }
        private void RenderLink(StringBuilder result, SitecoreTriple triple, bool refferences)
        {
            Item item = refferences ? triple.ObjectNode.Item : triple.SubjectNode.Item;

            if (IsHidden(item) && !UserOptions.View.ShowHiddenItems)
            {
                return;
            }

            if (item == null)
            {
                result.Append(string.Format("<div class=\"scLink\">{0} {1}: {2}, {3}</div>",
                                            (object)Images.GetImage("Applications/16x16/error.png", 16, 16, "absmiddle", "0px 4px 0px 0px"),
                                            (object)Translate.Text("Not found"), "TODO: Target database for link", "TODO: Target broken link ID"));
            }
            else
            {
                result.Append("<a href=\"#\" class=\"scLink\" onclick='javascript:return scForm.invoke(\"item:load(id=" +
                              (object)item.ID + ",language=" + item.Language.ToString() + ",version=" + item.Version.ToString() + ")\")'>" +
                              Images.GetImage(item.Appearance.Icon, 16, 16, "absmiddle", "0px 4px 0px 0px") +
                              item.DisplayName);


                if (!SitecoreTripleHelper.GetFieldIdFromPredicate(triple.PredicateNode).IsNull)
                {
                    var linkField = triple.SubjectNode.Item.Fields[SitecoreTripleHelper.GetFieldIdFromPredicate(triple.PredicateNode)];

                    if (linkField != null)
                    {
                        if (!string.IsNullOrEmpty(linkField.DisplayName))
                        {
                            result.Append(" - ");
                            result.Append(linkField.DisplayName);

                            if (!linkField.HasValue)
                            {
                                result.Append(" <span style=\"color:#999999\">");
                                result.Append(Translate.Text("[inherited]"));
                                result.Append("</span>");
                            }
                        }
                    }
                }

                result.Append(" - [" + item.Paths.Path + "]</a>");
            }
        }
        public Triple FormatTriple(Triple triple)
        {
            var subjectItem = SitecoreTripleHelper.UriToItem(triple.Subject.ToString());
            var objectItem  = SitecoreTripleHelper.UriToItem(triple.Object.ToString());

            if (subjectItem == null || objectItem == null)
            {
                return(triple);
            }

            //TODO: Better solution for removing /sitecore/shell from links
            var subjectUrl = LinkManager.GetItemUrl(subjectItem).Replace("/sitecore/shell", "");
            var objectUrl  = LinkManager.GetItemUrl(objectItem).Replace("/sitecore/shell", "");

            var g = new Graph();

            IUriNode sub  = g.CreateUriNode(new Uri(subjectUrl));
            IUriNode pred = g.CreateUriNode(new Uri(triple.Predicate.ToString().Split('#')[0]));
            IUriNode obj  = g.CreateUriNode(new Uri(objectUrl));

            triple = new Triple(sub, pred, obj);

            return(triple);
        }
        public void AddLink(Item item, ItemLink link)
        {
            var triple = SitecoreTripleHelper.ToTriple(ConceptManager, item, link);

            WriteTriple(triple);
        }
        private void RenderTriples(StringBuilder result, IEnumerable <VDS.RDF.Triple> referrers, bool refferences)
        {
            string heading = string.Empty;

            if (refferences)
            {
                heading = "References with predicate: ";
            }
            else
            {
                heading = "Referrers with predicate: ";
            }

            foreach (var predicateGroup in referrers.ToSitecoreTriples().GroupBy(x => SitecoreTripleHelper.RemoveLinkFieldFromPredicate(x.PredicateNode)))
            {
                var triples = predicateGroup.AsEnumerable();

                result.Append("<div style=\"font-size:14px; padding:10px 15px 10px;background-color:#474747; color:white\"><span style=\"font-weight:bold; \">" + Translate.Text(heading) + "</span>" + predicateGroup.Key.ToString() + "</div>");

                foreach (var triple in triples)
                {
                    RenderLink(result, triple, refferences);
                }
            }
        }