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()); }
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)); }
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); } } }