private string GetUserBaseUriFromFilter(string filterpredicate) { var uri = GetPropertyFromFilter(filterpredicate, "UserProfileUri"); uri = DataProviderHelper.GetWebIdRootURL(uri); return(uri); }
protected override void DoDelete(VisitedPlaceDataObject entity, LambdaExpression securityFilterExpression, IObjectsDataSet context, Dictionary <string, object> parameters) { var userUri = DataProviderHelper.GetWebIdRootURL(entity.UserProfileUri); string visitedPlaceDocumentName = "myvisitedplaces.ttl"; string visitedPlaceDocumentUri = $"{userUri}/public/{visitedPlaceDocumentName}"; StringBuilder sb; string payload = ""; if (!entity.IsNew) { // existing entity => we need to delete existing entry, before inserting modified one var existingEntity = DoGet(entity, securityFilterExpression, null, context, parameters); sb = new StringBuilder(); sb.AppendLine($":{entity.Id} "); sb.AppendLine($" a <http://generativeobjects.com/apps#VisitedPlace> ;"); sb.AppendLine($" <http://schema.org/startDate> \"{existingEntity.Date.ToString("yyyy-MM-dd")}\" ;"); sb.AppendLine($" <http://schema.org/description> \"\"\"{existingEntity.Description}\"\"\" ; "); sb.AppendLine($" <http://generativeobjects.com/apps#VisitedPlaceType> \"{existingEntity.Typeofplace.ToString()}\" ; "); if (existingEntity.Typeofplace == PlaceTypesEnum.Country && entity.CountryURI != null) { sb.AppendLine($" <http://dbpedia.org/class/yago/WikicatMemberStatesOfTheUnitedNations> <{existingEntity.CountryURI}> . "); } else { sb.AppendLine($" <http://dbpedia.org/ontology/Place> <{existingEntity.PlaceURI}> . "); } payload += $"DELETE DATA {{{sb.ToString()}}} "; } var token = DataProviderHelper.GetSolidToken(); var statusPatch = DataProviderHelper.SendPatch(visitedPlaceDocumentUri, payload, token); if (statusPatch != HttpStatusCode.OK) { throw new GOServerException("Failed to delete the visited place information"); } }
protected override VisitedPlaceDataObject DoGet(VisitedPlaceDataObject entity, LambdaExpression securityFilterExpression, List <string> includes, IObjectsDataSet context, Dictionary <string, object> parameters) { var userUri = DataProviderHelper.GetWebIdRootURL(entity.UserProfileUri); string visitedPlaceDocumentName = "myvisitedplaces.ttl"; string visitedPlacesDocumentUri = $"{userUri}/public/{visitedPlaceDocumentName}"; //string visitedPlaceUri = $"{visitedPlacesDocumentUri}#{entity.Id}"; // to be used with UriLoader.Load string tempfile = null; try { tempfile = DataProviderHelper.DownloadFile(visitedPlacesDocumentUri, ".ttl"); var g = new Graph(); g.LoadFromFile(tempfile); //UriLoader.Load(g, new Uri(visitedPlaceDocumentUri)); // NOT WORKING ... ??? SOMEHOW SHOULD WORK var query = new SparqlParameterizedString(); query.CommandText = @"SELECT * WHERE { @VisitedPlace <http://schema.org/startDate> ?Date ; <http://schema.org/description> ?Description. OPTIONAL { @VisitedPlace <http://generativeobjects.com/apps#VisitedPlaceType> ?PlaceOrCountry . } OPTIONAL { @VisitedPlace <http://dbpedia.org/ontology/Place> ?PlaceURI . } OPTIONAL { @VisitedPlace <http://dbpedia.org/class/yago/WikicatMemberStatesOfTheUnitedNations> ?CountryURI . } }"; // <http://dbpedia.org/class/yago/WikicatMemberStatesOfTheUnitedNations> ?CountryURI ; string visitedPlaceLocalFileUri = $"file://////{tempfile}#{entity.Id}"; query.SetUri("VisitedPlace", new Uri(visitedPlaceLocalFileUri)); var results = (SparqlResultSet)g.ExecuteQuery(query); var result = results.SingleOrDefault(); if (result == null) { throw new GOServerException("Cannot load the VisitedPlace"); } var visitedPlace = MapSparqlResultToVisitedPlace(result, mapId: false); visitedPlace.Id = entity.Id; visitedPlace.UserProfileUri = entity.UserProfileUri; var dataset = ApplicationSettings.Container.Resolve <IObjectsDataSet>(); dataset.AddObject(visitedPlace); return(visitedPlace); } finally { if (File.Exists(tempfile)) { File.Delete(tempfile); } } }