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