コード例 #1
0
        private string GetUserBaseUriFromFilter(string filterpredicate)
        {
            var uri = GetPropertyFromFilter(filterpredicate, "UserProfileUri");

            uri = DataProviderHelper.GetWebIdRootURL(uri);

            return(uri);
        }
コード例 #2
0
        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");
            }
        }
コード例 #3
0
        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);
                }
            }
        }