public override QueryBenchmark RunBenchmark() { var benchmark = new QueryBenchmark(); var variables = QueryGraph.Edges.Select(x => x.Value).Where(x => !x.IsConstant).Select(x => x.name).ToArray(); benchmark.GraphQuery = QueryGraph.Nodes.First().Value.ToSparql(QueryGraph, variables).ToString().FixQuery(); benchmark.GraphString = QueryGraph.ToString(); benchmark.GraphHashCode = QueryGraph.GetHashCode(); benchmark.BenchmarkType = "Endpoint"; // Begin timing var stopwatch = new Stopwatch(); stopwatch.Start(); //Query GraphApiQueries.QueryTimeoutMs = 50000; //50 secs var results = GraphApiQueries.RunQuery(benchmark.GraphQuery); // Write result stopwatch.Stop(); benchmark.ElapsedTime = stopwatch.Elapsed; //Set Results if (results != null) { benchmark.ResultsDictionary = GetEndpointResults(results); } return(benchmark); }
public void TestSparqlEndpointWorks_Own() { var query = @" SELECT DISTINCT ?var1 ?var1Label WHERE{ <http://www.wikidata.org/entity/Q76> ?prop0 ?var1 . SERVICE <http://wikiba.se/ontology#label> { <http://www.bigdata.com/rdf#serviceParam> <http://wikiba.se/ontology#language> ""[AUTO_LANGUAGE],en"" .} }"; var results = GraphApiQueries.RunQuery(query); Assert.NotEmpty(results); }
public void TestSparqlEndpointWorks_Cats() { var query = @" SELECT ?item ?itemLabel WHERE { ?item <http://www.wikidata.org/prop/direct/P31> <http://www.wikidata.org/entity/Q146>. SERVICE wikibase:label { bd:serviceParam wikibase:language ""[AUTO_LANGUAGE],en"". } }"; var results = GraphApiQueries.RunQuery(query); Assert.NotEmpty(results); }
public void TestSparqlEndpointWorks_VarToCat_WorksFine() { var query = @" SELECT DISTINCT * WHERE { ?var2 ?prop1 <http://www.wikidata.org/entity/Q146> . FILTER(<http://www.w3.org/2005/xpath-functions#starts-with>(STR(?var2),""http://www.wikidata.org/entity/Q"")) FILTER(<http://www.w3.org/2005/xpath-functions#starts-with>(STR(?prop1),""http://www.wikidata.org/prop/direct/P"")) } LIMIT 10000 "; var results = GraphApiQueries.RunQuery(query); Assert.NotEmpty(results); }
public void TestResultToEntity() { const string query = @" SELECT DISTINCT ?item WHERE { ?item wdt:P31 wd:Q146. } LIMIT 10"; var results = GraphApiQueries.RunQuery(query).GetIds(); foreach (var result in results) { Assert.StartsWith("Q", result); } }
public void TestResultObamaToEntity() { const string query = @" SELECT DISTINCT ?item WHERE { wd:Q76 ?prop0 ?item . ?item rdfs:label ?o . } LIMIT 10"; var results = GraphApiQueries.RunQuery(query).GetIds(); foreach (var result in results) { Assert.StartsWith("Q", result); } }
public void TestSparqlEndpointWorks_VarToHuman_TimesOut() { var query = @" SELECT DISTINCT * WHERE { ?var2 ?prop1 <http://www.wikidata.org/entity/Q5> . FILTER(<http://www.w3.org/2005/xpath-functions#starts-with>(STR(?var2),""http://www.wikidata.org/entity/Q"")) FILTER(<http://www.w3.org/2005/xpath-functions#starts-with>(STR(?prop1),""http://www.wikidata.org/prop/direct/P"")) } LIMIT 10000 "; GraphApiQueries.QueryTimeoutMs = 2000; var results = GraphApiQueries.RunQuery(query); Assert.Null(results); }
private List <Task <SparqlResultSet> > RunWikidataEndpointQueries(QueryGraph graph, int limit = 100) { var tasks = new List <Task <SparqlResultSet> >(); foreach (var node in graph.Nodes.Select(x => x.Value)) { //if (node.Traversed) continue; var query = node.ToSparql(graph, limit).ToString().FixQuery(); //Somehow it sends some empty queries, not sure why. Easy fix, but not the right one. if (query.Contains("WHERE { }")) { continue; } tasks.Add(GraphApiQueries.RunQueryAsync(query)); } return(tasks.Where(x => x != null).ToList()); }
public void TestFromGraph() { var graph = new RDFExplorerGraph() { nodes = new[] { new Node(0, "?var0", new[] { "http://www.wikidata.org/entity/Q76" }), new Node(1, "?var1"), }, edges = new[] { new Edge(0, "?prop0", 0, 1) }, }; var queryGraph = new QueryGraph(graph); var query = queryGraph.Nodes[1].ToSparql(queryGraph); var results = GraphApiQueries.RunQuery(query.ToString()).GetIds(); foreach (var result in results) { Assert.True(result.StartsWith("Q") || result.StartsWith("P")); } }