public SparqlObject SelectData(string pSPARQLEndpoint, string pGraph, string pConsulta, string pQueryParam, string pUsername, string pPassword)
        {
            SparqlObject datosSPARQL = null;
            string       urlConsulta = pSPARQLEndpoint;
            WebClient    webClient   = new WebClient();

            webClient.Encoding = Encoding.UTF8;
            webClient.Headers.Add(HttpRequestHeader.ContentType, "application/x-www-form-urlencoded");

            if (!string.IsNullOrEmpty(pUsername) && !string.IsNullOrEmpty(pPassword))
            {
                webClient.Credentials = new System.Net.NetworkCredential(pUsername, pPassword);
            }

            NameValueCollection parametros = new NameValueCollection();

            parametros.Add("default-graph-uri", pGraph);
            parametros.Add(pQueryParam, pConsulta);
            parametros.Add("format", "application/sparql-results+json");

            byte[]    responseArray = null;
            int       numIntentos   = 0;
            Exception exception     = null;

            while (responseArray == null && numIntentos < 5)
            {
                numIntentos++;
                try
                {
                    responseArray = webClient.UploadValues(urlConsulta, "POST", parametros);
                    exception     = null;
                }
                catch (Exception ex)
                {
                    Thread.Sleep(10000);
                    exception = ex;
                }
            }
            if (exception != null)
            {
                throw exception;
            }
            string jsonRespuesta = System.Text.Encoding.UTF8.GetString(responseArray);

            if (!string.IsNullOrEmpty(jsonRespuesta))
            {
                datosSPARQL = JsonConvert.DeserializeObject <SparqlObject>(jsonRespuesta);
            }
            return(datosSPARQL);
        }
Esempio n. 2
0
        /// <summary>
        /// Busca personas en el API de DBPEDIA
        /// </summary>
        /// <param name="q">Texto a buscar (con urlEncode)</param>
        /// <returns>Objeto con las personas encontradas</returns>
        public static DBPEDIAData Search(string q)
        {
            string        SPARQLEndpoint = "https://dbpedia.org/sparql";
            string        Graph          = "http://dbpedia.org";
            string        consulta       = "select * where {?s <http://www.w3.org/2000/01/rdf-schema#label> '" + q + "'@es. ?s a ?rdftype.FILTER(?rdftype in (<http://dbpedia.org/ontology/Organisation>,<http://dbpedia.org/ontology/Place>)) MINUS{?s <http://dbpedia.org/ontology/wikiPageDisambiguates> ?dis} OPTIONAL {?s <http://www.w3.org/2002/07/owl#sameAs> ?geonames.FILTER(?geonames like'http://sws.geonames.org*')}}";
            string        QueryParam     = "query";
            SparqlUtility utility        = new SparqlUtility();
            SparqlObject  sparqlObject   = utility.SelectData(SPARQLEndpoint, Graph, consulta, QueryParam, "", "");
            DBPEDIAData   dBPEDIAData    = new DBPEDIAData();

            foreach (var result in sparqlObject.results.bindings)
            {
                if (result.ContainsKey("s") && result["s"] != null)
                {
                    dBPEDIAData.uri_dbpedia = result["s"].value;
                }
                if (result.ContainsKey("geonames") && result["geonames"] != null)
                {
                    dBPEDIAData.uri_geonames = result["geonames"].value;
                }
            }
            return(dBPEDIAData);
        }
Esempio n. 3
0
        public SparqlObject SelectData(string pSPARQLEndpoint, string pGraph, string pConsulta, string pQueryParam, string pUsername, string pPassword)
        {
            SparqlResultSet sparqlResultSet = (SparqlResultSet)_dataGraph.ExecuteQuery(pConsulta.ToString());
            SparqlObject    sparqlObject    = new SparqlObject();

            sparqlObject.results          = new SparqlObject.Results();
            sparqlObject.results.bindings = new List <Dictionary <string, SparqlObject.Data> >();
            foreach (var sparqlResult in sparqlResultSet)
            {
                Dictionary <string, SparqlObject.Data> dict = new Dictionary <string, SparqlObject.Data>();
                foreach (var variable in sparqlResult.Variables)
                {
                    SparqlObject.Data data = new SparqlObject.Data();
                    if (sparqlResult[variable] != null)
                    {
                        data.type = variable;
                        if (sparqlResult[variable] is LiteralNode)
                        {
                            data.value = ((LiteralNode)(sparqlResult[variable])).Value;
                            if (((LiteralNode)sparqlResult[variable]).DataType != null)
                            {
                                data.datatype = ((LiteralNode)sparqlResult[variable]).DataType.ToString();
                            }
                        }
                        else
                        {
                            data.value = sparqlResult[data.type].ToString();
                        }
                        dict.Add(data.type, data);
                    }
                }

                sparqlObject.results.bindings.Add(dict);
            }
            return(sparqlObject);
        }
Esempio n. 4
0
        public void CargarPeliculas(List <Movie> peliculas, Dictionary <string, string> guidDictionary)
        {
            mResourceApi.ChangeOntoly("pelicula");
            List <string> guidsExistentes = new List <string>();

            try
            {
                SparqlObject resultados = mResourceApi.VirtuosoQuery("Select distinct ?o ?id  ", "Where { ?o <http://schema.org/name> ?id  }", "pelicula");
                foreach (var resultado in resultados.results.bindings)
                {
                    guidsExistentes.Add(resultado["o"].value);
                }
            }
            catch (Exception e)
            {
                mResourceApi.Log.Error($"Error al hacer la consulta a Virtuoso: {e.Message} -> {e.StackTrace}");
            }



            foreach (Movie pelicula in peliculas)
            {
                if (!guidsExistentes.Contains("http://try.gnoss.com/items/" + guidDictionary[pelicula.Schema_name]))
                {
                    try
                    {
                        ComplexOntologyResource complexResource = pelicula.ToGnossApiResource(mResourceApi, null, new Guid(guidDictionary[pelicula.Schema_name].Split('_')[1]), new Guid(guidDictionary[pelicula.Schema_name].Split('_')[2]));
                        mResourceApi.LoadComplexSemanticResource(complexResource);
                    }
                    catch (Exception e)
                    {
                        mResourceApi.Log.Error(pelicula.Schema_name);
                    }
                }
            }
        }