public IGraph GetSparlAsGraph(string query) { if (!query.Contains("CONSTRUCT")) { throw new ArgumentException("Only construct querries can be shown as graphs"); } var res = theConnector.Query(query); return(res as IGraph); }
/// <summary> /// Executes a <c>SparqlQuery</c> on the store. /// </summary> /// <param name="query">SPARQL query string to be executed.</param> /// <param name="transaction">An optional transaction.</param> /// <returns></returns> public StardogResultHandler ExecuteQuery(string query, ITransaction transaction = null) { Log?.Invoke(query); StardogResultHandler resultHandler = new StardogResultHandler(); _connector.Query(_rdfHandler, resultHandler, query); return(resultHandler); }
public List <ProductType> PopulateProducts(StardogConnector context) { var factory = new Factory(); var productTypeList = new List <ProductType>(); var resultsQuery = context.Query( "PREFIX t: <http://www.semanticweb.org/bobo/ontologies/2015/0/Adriana#>SELECT ?s WHERE {?s rdfs:subClassOf <http://www.semanticweb.org/bobo/ontologies/2015/0/Adriana#Type> .}") as SparqlResultSet; if (resultsQuery != null) { resultsQuery.Results.ForEach(item => { var link = item["s"]; var productResult = context.Query( "PREFIX t: <http://www.semanticweb.org/bobo/ontologies/2015/0/Adriana#>SELECT ?s WHERE {?s rdfs:subClassOf <" + link.ToString() + "> .}") as SparqlResultSet; if (productResult != null && productResult.Results.Count > 2) { var product = factory.CreateProductTypes(productResult.Results, link); if (product != null) { productTypeList.Add(product); } } }); } foreach (var productType in productTypeList) { foreach (var subCategory in productType.SubCategories) { var query = context.Query("SELECT * WHERE { ?subject rdfs:subClassOf <" + subCategory.URI + "> . ?instance a ?subject . }") as SparqlResultSet; subCategory.Products = new List <ProductInstance>(); if (query != null) { foreach (var res in query.Results) { if (res["instance"].ToString().ToLower() != subCategory.URI.ToLower()) { subCategory.Products.Add(new ProductInstance { URI = res["instance"].ToString(), Name = res["instance"].ToString().Substring("http://www.semanticweb.org/bobo/ontologies/2015/0/Adriana#".Length) }); } } } } } return(productTypeList); }
public Dictionary <string, string> PopulateAllBrands() { var dict = new Dictionary <string, string>(); var queryUrl = myContext.Query("PREFIX t: <http://www.semanticweb.org/bobo/ontologies/2015/0/Adriana#> SELECT ?y WHERE { ?x rdfs:subClassOf* t:Brand . ?y rdf:type ?x . }") as SparqlResultSet; if (queryUrl == null) { return(dict); } foreach (var aux in queryUrl.Results.Select(res => res["y"].ToString().Substring("http://www.semanticweb.org/bobo/ontologies/2015/0/Adriana#".Length))) { dict.Add(aux, aux); } return(dict); }
public IEnumerable <Provenance> Get(string title) { using (StardogConnector dog = new StardogConnector(StarDogUrl, DbName, "admin", "admin")) { SparqlResultSet provResults = dog.Query( "SELECT distinct ?provenanceLabel ?location ?dateAcquired ?ownerLabel ?dispayOrder WHERE {" + "?artwork a dbo:Artwork ." + "?artwork rdfs:label ?label . " + "?artwork :provenance ?provenance ." + "?provenance :dateAcquired ?dateAcquired ." + "?provenance rdfs:label ?provenanceLabel ." + "?provenance schema:location ?city ." + "?city rdfs:label ?location ." + "?provenance gvp:displayOrder ?dispayOrder." + "?provenance gvp:ulan2779_owned_by ?owner. " + "?owner rdfs:label ?ownerLabel. " + "FILTER regex(str(?label), \"" + title + "\") ." + "FILTER(LANG(?ownerLabel) = \"\" || LANGMATCHES(LANG(?ownerLabel), \"en\")) ." + "FILTER(lang(?location) = \"en\")} " + "ORDER BY ASC(xsd:integer(?dispayOrder))") as SparqlResultSet; var provenance = provResults? .Select(x => new Provenance(x)) .GroupBy(x => x.DispayOrder, (key, g) => g.OrderBy(e => e.DispayOrder).First()); return(provenance); } }
// GET api/<controller>?title="any" public Artwork Get(string title) { using (StardogConnector dog = new StardogConnector(StarDogUrl, DbName, "admin", "admin")) { SparqlResultSet artworkResults = dog.Query( "SELECT distinct ?label ?abstract ?depiction ?museumlabel ?authorLabel WHERE {" + "?artwork a dbo:Artwork ." + "?artwork rdfs:label ?label . " + "?artwork dbo:abstract ?abstract ." + "?artwork foaf:depiction ?depiction ." + "?artwork dbo:author ?author ." + "?author foaf:name ?authorLabel ." + "?artwork dbo:museum ?museum ." + "?museum rdfs:label ?museumlabel ." + "FILTER regex(str(?label), \"" + title + "\")" + "FILTER(lang(?museumlabel) = \"en\") ." + "FILTER(lang(?abstract) = \"en\")}") as SparqlResultSet; if (!artworkResults.Any()) { return(null); } var result = artworkResults[0]; return(new Artwork( result.Value("label").ToString(), result.Value("museumlabel").ToString(), result.Value("abstract").ToString(), result.Value("depiction").ToString(), result.Value("authorLabel").ToString())); } }
/// <summary> /// Executes the referencing queries /// </summary> private static void AddReferenceGraph() { Log("Executing AddReferenceGraph()"); Log("Connecting to Movie store..."); var movieStore = new StardogConnector(settings.ServerIp, MoviesDbName, settings.Login, settings.Password); movieStore.Timeout = int.MaxValue; movieStore.DeleteGraph("http://imn.htwk-leipzig.de/pbachman/ontologies/references#"); Log("Inserting film references..."); movieStore.Query(File.ReadAllText(ReferenceFilmsQuery)); Log("Inserting Song references..."); movieStore.Query(File.ReadAllText(ReferenceSongsQuery)); Log("Inserting Artists references..."); movieStore.Query(File.ReadAllText(ReferenceArtistsQuery)); Log("Inserting Chart song references..."); movieStore.Query(File.ReadAllText(ReferenceChartsDe1Query)); }
internal object Test() { resultsQuery = Context.Query("SELECT DISTINCT ?s WHERE { ?s ?p ?o } LIMIT 10") as SparqlResultSet; resultsQuery.Results.ForEach(item => { var link = item["s"]; SparqlResultSet productResult = new SparqlResultSet(); //productResult = Context.Query("select ?p ?o WHERE { ?s ?p ?o FILTER (str(?s) = \"" + link.ToString() + "\" ) }") as SparqlResultSet; //Product product = CreateProduct(productResult.Results); //products.Add(product); }); return(null); }
// GET api/<controller> public IEnumerable <Artist> Get() { using (StardogConnector dog = new StardogConnector(StarDogUrl, DbName, "admin", "admin")) { SparqlResultSet artistsResults = dog.Query( "SELECT distinct ?label ?abstract WHERE {" + "?person rdf:type dbo:Artist ." + "?person rdfs:label ?label . " + "?person dbo:abstract ?abstract ." + "FILTER(lang(?abstract) = 'en') ." + "FILTER(lang(?label) = \"en\") }") as SparqlResultSet; var artists = artistsResults?.Select(x => new Artist(x)); return(artists); } }
// GET api/<controller>?artist="any" public IEnumerable <Artwork> Get(string artist) { using (StardogConnector dog = new StardogConnector(StarDogUrl, DbName, "admin", "admin")) { SparqlResultSet artworkResults = dog.Query( "SELECT distinct ?label ?depiction ?abstract WHERE {" + "?artwork a dbo:Artwork ." + "?artwork rdfs:label ?label . " + "?artwork dbo:abstract ?abstract ." + "?artwork foaf:depiction ?depiction ." + "?artwork dbo:author ?author ." + "?author foaf:name ?authorLabel ." + "FILTER regex(str(?authorLabel), \"" + artist + "\")" + "FILTER(lang(?label) = \"en\") ." + "FILTER(lang(?abstract) = \"en\")}") as SparqlResultSet; var artworks = artworkResults?.Select(x => new Artwork(x)); return(artworks); } }
// GET api/<controller>/?artistName="any" public IEnumerable <Artwork> Get(string artistName) { using (StardogConnector dog = new StardogConnector(StarDogUrl, DbName, "admin", "admin")) { SparqlResultSet artworksResults = dog.Query( "SELECT distinct ?label ?abstract?depiction ?labelArtwork WHERE {" + "?person rdf:type dbo:Artist ." + "?person rdfs:label ?label ." + "?artwork a dbo:Artwork ." + "?artwork foaf:depiction ?depiction ." + "?person dbo:abstract ?abstract ." + "?artwork dbo:author ?person ." + "?artwork rdfs:label ?labelArtwork . " + " FILTER(lang(?abstract) = 'en') ." + "FILTER(lang(?label) = 'en') ." + "FILTER regex(str(?labelArtwork), \"" + artistName + "\")" + "FILTER(lang(?labelArtwork) = 'en') }") as SparqlResultSet; var artworks = artworksResults?.Select(x => new Artwork(x)); return(artworks); } }
public void PopulateProductsInfoBySubcategory(StardogConnector context, SubCategory s) { var queryUrl = context.Query("PREFIX t: <http://www.semanticweb.org/bobo/ontologies/2015/0/Adriana#> SELECT ?ind ?url WHERE { ?ind t:Has_URL ?url. ?ind rdf:type t:" + s.SubCategoryName + " } ") as SparqlResultSet; if (queryUrl != null) { foreach (var res in queryUrl.Results) { var p = s.Products.FirstOrDefault(f => f.URI.ToLower() == res["ind"].ToString().ToLower()); if (p != null) { p.Url = res["url"].ToString(); } } } var queryBuyUrl = context.Query("PREFIX t: <http://www.semanticweb.org/bobo/ontologies/2015/0/Adriana#> SELECT ?ind ?url WHERE { ?ind t:Has_buy_url ?url. ?ind rdf:type t:" + s.SubCategoryName + " } ") as SparqlResultSet; if (queryBuyUrl != null) { foreach (var res in queryBuyUrl.Results) { var p = s.Products.FirstOrDefault(f => f.URI.ToLower() == res["ind"].ToString().ToLower()); if (p != null) { p.BuyUrl = res["url"].ToString(); } } } var queryColours = context.Query("PREFIX t: <http://www.semanticweb.org/bobo/ontologies/2015/0/Adriana#> SELECT ?ind ?c WHERE { ?ind t:Has_colour ?c. ?ind rdf:type t:" + s.SubCategoryName + " } ") as SparqlResultSet; if (queryColours != null) { foreach (var res in queryColours.Results) { var p = s.Products.FirstOrDefault(f => f.URI.ToLower() == res["ind"].ToString().ToLower()); if (p != null) { if (p.Colour == null) { p.Colour = new List <string>(); } p.Colour.Add(res["c"].ToString().Substring("http://www.semanticweb.org/bobo/ontologies/2015/0/Adriana#".Length)); } } } var querySeason = context.Query("PREFIX t: <http://www.semanticweb.org/bobo/ontologies/2015/0/Adriana#> SELECT ?ind ?s WHERE { ?ind t:Is_from_season ?s. ?ind rdf:type t:" + s.SubCategoryName + " } ") as SparqlResultSet; if (querySeason != null) { foreach (var res in querySeason.Results) { var p = s.Products.FirstOrDefault(f => f.URI.ToLower() == res["ind"].ToString().ToLower()); if (p != null) { if (p.Season == null) { p.Season = new List <string>(); } p.Season.Add(res["s"].ToString().Substring("http://www.semanticweb.org/bobo/ontologies/2015/0/Adriana#".Length)); } } } var queryBrand = context.Query("PREFIX t: <http://www.semanticweb.org/bobo/ontologies/2015/0/Adriana#> SELECT ?ind ?s WHERE { ?ind t:Is_from ?s. ?ind rdf:type t:" + s.SubCategoryName + " } ") as SparqlResultSet; if (queryBrand != null) { foreach (var res in queryBrand.Results) { var p = s.Products.FirstOrDefault(f => f.URI.ToLower() == res["ind"].ToString().ToLower()); if (p != null) { if (p.Brand == null) { p.Brand = new List <string>(); } p.Brand.Add(res["s"].ToString().Substring("http://www.semanticweb.org/bobo/ontologies/2015/0/Adriana#".Length)); } } } var queryStyle = context.Query("PREFIX t: <http://www.semanticweb.org/bobo/ontologies/2015/0/Adriana#> SELECT ?ind ?s WHERE { ?ind t:Has_style ?s. ?ind rdf:type t:" + s.SubCategoryName + " } ") as SparqlResultSet; if (queryStyle != null) { foreach (var res in queryStyle.Results) { var p = s.Products.FirstOrDefault(f => f.URI.ToLower() == res["ind"].ToString().ToLower()); if (p != null) { if (p.Style == null) { p.Style = new List <string>(); } p.Style.Add(res["s"].ToString().Substring("http://www.semanticweb.org/bobo/ontologies/2015/0/Adriana#".Length)); } } } var queryGender = context.Query("PREFIX t: <http://www.semanticweb.org/bobo/ontologies/2015/0/Adriana#> SELECT ?ind ?s WHERE { ?ind t:For_gender ?s. ?ind rdf:type t:" + s.SubCategoryName + " } ") as SparqlResultSet; if (queryGender != null) { foreach (var res in queryGender.Results) { var p = s.Products.FirstOrDefault(f => f.URI.ToLower() == res["ind"].ToString().ToLower()); if (p != null) { if (p.Gender == null) { p.Gender = new List <string>(); } p.Gender.Add(res["s"].ToString().Substring("http://www.semanticweb.org/bobo/ontologies/2015/0/Adriana#".Length)); } } } }
/// <summary> /// This executes the saved SPARQL against the passed server and with the passed parameters /// </summary> /// <param name="parameters">Parameters to pass on to the SPARQL query. Can be any of the types that extend MiddlewareParameter</param> /// <param name="session">This holds server details, including username and password</param> /// <returns></returns> public IEnumerable <MiddlewareParameter> ExecuteSelect(IEnumerable <MiddlewareParameter> parameters, Session session, ParameterTypeEnum returnTypeWanted) { StardogConnector theConnector = getConnector(session); SparqlParameterizedString query = getQuery(parameters, sparql); try { IEnumerable <SparqlResult> queryResult = theConnector.Query(query.ToString()) as SparqlResultSet;//actually fire the query if (queryResult.Count <SparqlResult>() == 0) { return(Enumerable.Empty <MiddlewareParameter>());//Don't do unnecessary processing, but returning null causes crashes further up } List <MiddlewareParameter> Result = new List <MiddlewareParameter>(); bool linkParams = returnTypeWanted.HasFlag(ParameterTypeEnum.Multivalue); //I stay null if not doing multivalue requests MiddlewareParameter <List <MiddlewareParameter> > multiValue = null; int lineNumber = 1; foreach (SparqlResult res in queryResult)//for each line { if (linkParams) { multiValue = new MiddlewareParameter <List <MiddlewareParameter> >(MiddlewareParameterDirection.Out); multiValue.ParamName = lineNumber++.ToString(); multiValue.ParamValue = new List <MiddlewareParameter>(); returnTypeWanted &= ~ParameterTypeEnum.Multivalue; //The effect of this is allowing us to switch on the return type wanted } foreach (KeyValuePair <string, INode> parameterValue in res) //each parameter { if (linkParams) { handleLanguageTags(multiValue, parameterValue); } MiddlewareParameter toAdd = null; switch (returnTypeWanted) { case ParameterTypeEnum.AsSource: toAdd = createAsPerSourceType(parameterValue); break; case ParameterTypeEnum.String: toAdd = createStringParameter(parameterValue); break; case ParameterTypeEnum.ByteArray: toAdd = createByteParameter(parameterValue); break; case ParameterTypeEnum.Uri: toAdd = createUriParameter(parameterValue); break; default: throw new ArgumentException("Invalid return parameter type specified"); } if ((toAdd != null) && (!linkParams)) { Result.Add(toAdd); } else if (linkParams) { multiValue.ParamValue.Add(toAdd); } } if (linkParams) { Result.Add(multiValue); } } return(Result); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine(query.CommandText); throw ex; } }