Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
            }
        }
Example #7
0
        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"));
            }
        }