本文整理汇总了C#中Graph.ExecuteQuery方法的典型用法代码示例。如果您正苦于以下问题:C# Graph.ExecuteQuery方法的具体用法?C# Graph.ExecuteQuery怎么用?C# Graph.ExecuteQuery使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Graph
的用法示例。
在下文中一共展示了Graph.ExecuteQuery方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: SparqlXmlWriter
public void SparqlXmlWriter()
{
try
{
Graph g = new Graph();
FileLoader.Load(g, "InferenceTest.ttl");
Object results = g.ExecuteQuery("SELECT * WHERE {?s ?p ?o}");
if (results is SparqlResultSet)
{
TestTools.ShowResults(results);
}
StringBuilder output = new StringBuilder();
System.IO.StringWriter writer = new System.IO.StringWriter(output);
SparqlXmlWriter sparqlWriter = new SparqlXmlWriter();
sparqlWriter.Save((SparqlResultSet)results, writer);
Console.WriteLine();
Console.WriteLine(output.ToString());
Console.WriteLine();
SparqlXmlParser parser = new SparqlXmlParser();
SparqlResultSet results2 = new SparqlResultSet();
StringParser.ParseResultSet(results2, output.ToString());
Assert.AreEqual(((SparqlResultSet)results).Count, results2.Count, "Result Sets should have contained same number of Results");
Assert.IsTrue(((SparqlResultSet)results).Equals(results2), "Result Sets should have been equal");
}
catch (Exception ex)
{
TestTools.ReportError("Error", ex, true);
}
}
示例2: SparqlResultSetToDataTable2
public void SparqlResultSetToDataTable2()
{
String query = "PREFIX ex: <http://example.org/vehicles/> SELECT * WHERE {?s a ex:Car . OPTIONAL { ?s ex:Speed ?speed }}";
SparqlQueryParser parser = new SparqlQueryParser();
SparqlQuery q = parser.ParseFromString(query);
Graph g = new Graph();
FileLoader.Load(g, "InferenceTest.ttl");
Object results = g.ExecuteQuery(q);
if (results is SparqlResultSet)
{
SparqlResultSet rset = (SparqlResultSet)results;
DataTable table = new DataTable();
foreach (String var in rset.Variables)
{
table.Columns.Add(new DataColumn(var, typeof(INode)));
}
foreach (SparqlResult r in rset)
{
DataRow row = table.NewRow();
foreach (String var in rset.Variables)
{
if (r.HasValue(var))
{
row[var] = r[var];
}
else
{
row[var] = null;
}
}
table.Rows.Add(row);
}
Assert.AreEqual(rset.Variables.Count(), table.Columns.Count, "Number of Columns should be equal");
Assert.AreEqual(rset.Count, table.Rows.Count, "Number of Rows should be equal");
foreach (DataRow row in table.Rows)
{
foreach (DataColumn col in table.Columns)
{
Object temp = row[col];
Console.Write(col.ColumnName + " = " + ((temp != null) ? temp.ToString() : String.Empty) + " , ");
}
Console.WriteLine();
}
}
else
{
Assert.Fail("Query should have returned a Result Set");
}
}
示例3: EnsureTestData
private void EnsureTestData(String file, ISparqlResultsWriter writer)
{
if (!File.Exists(file))
{
Graph g = new Graph();
g.LoadFromEmbeddedResource("VDS.RDF.Configuration.configuration.ttl");
SparqlResultSet results = g.ExecuteQuery("SELECT * WHERE { ?s ?p ?o }") as SparqlResultSet;
if (results == null) Assert.Fail("Failed to generate sample SPARQL Results");
writer.Save(results, file);
}
}
示例4: SparqlFunctionsRand
public void SparqlFunctionsRand()
{
String query = "SELECT ?s (RAND() AS ?rand) WHERE { ?s ?p ?o } ORDER BY ?rand";
Graph g = new Graph();
g.LoadFromFile("InferenceTest.ttl");
Object results = g.ExecuteQuery(query);
if (results is SparqlResultSet)
{
SparqlResultSet rset = (SparqlResultSet)results;
TestTools.ShowResults(rset);
}
else
{
Assert.Fail("Did not get a SPARQL Result Set as expected");
}
}
示例5: SparqlParsingSubQueryWithLimitAndOrderBy
public void SparqlParsingSubQueryWithLimitAndOrderBy()
{
Graph g = new Graph();
FileLoader.Load(g, "InferenceTest.ttl");
String query = "SELECT * WHERE { { SELECT * WHERE {?s ?p ?o} ORDER BY ?p ?o LIMIT 2 } }";
SparqlQueryParser parser = new SparqlQueryParser();
SparqlQuery q = parser.ParseFromString(query);
Object results = g.ExecuteQuery(q);
if (results is SparqlResultSet)
{
SparqlResultSet rset = (SparqlResultSet)results;
TestTools.ShowResults(rset);
Assert.IsTrue(rset.All(r => r.HasValue("s") && r.HasValue("p") && r.HasValue("o")), "All Results should have had ?s, ?p and ?o variables");
}
else
{
Assert.Fail("Expected a SPARQL Result Set");
}
}
示例6: SparqlFilterOptionalNotBound
public void SparqlFilterOptionalNotBound()
{
Graph g = new Graph();
g.LoadFromEmbeddedResource("VDS.RDF.Configuration.configuration.ttl");
SparqlParameterizedString query = new SparqlParameterizedString();
query.Namespaces.AddNamespace("rdf", new Uri(NamespaceMapper.RDF));
query.Namespaces.AddNamespace("rdfs", new Uri(NamespaceMapper.RDFS));
query.CommandText = "SELECT * WHERE { ?property a rdf:Property . OPTIONAL { ?property rdfs:range ?range } FILTER (!BOUND(?range)) }";
SparqlQueryParser parser = new SparqlQueryParser();
SparqlQuery q = parser.ParseFromString(query);
SparqlResultSet results = g.ExecuteQuery(q) as SparqlResultSet;
if (results != null)
{
TestTools.ShowResults(results);
Assert.IsTrue(results.All(r => !r.HasValue("range") || r["range"] == null), "There should be no values for ?range returned");
}
else
{
Assert.Fail("Did not get a SparqlResultSet as expected");
}
}
示例7: SparqlResultSetToDataTable6
public void SparqlResultSetToDataTable6()
{
String query = "ASK WHERE {?s <http://example.org/noSuchPredicate> ?o}";
SparqlQueryParser parser = new SparqlQueryParser();
SparqlQuery q = parser.ParseFromString(query);
Graph g = new Graph();
FileLoader.Load(g, "InferenceTest.ttl");
Object results = g.ExecuteQuery(q);
if (results is SparqlResultSet)
{
SparqlResultSet rset = (SparqlResultSet)results;
DataTable table = (DataTable)rset;
Assert.IsTrue(rset.ResultsType == SparqlResultsType.Boolean);
Assert.AreEqual(table.Columns.Count, 1, "Should only be one Column");
Assert.AreEqual(table.Rows.Count, 1, "Should only be one Row");
Assert.IsFalse((bool)table.Rows[0]["ASK"], "Should be false");
foreach (DataRow row in table.Rows)
{
foreach (DataColumn col in table.Columns)
{
Object temp = row[col];
Console.Write(col.ColumnName + " = " + ((temp != null) ? temp.ToString() : String.Empty) + " , ");
}
Console.WriteLine();
}
}
else
{
Assert.Fail("Query should have returned a Result Set");
}
}
示例8: SparqlResultSetToDataTable3
public void SparqlResultSetToDataTable3()
{
String query = "SELECT * WHERE {?s ?p ?o}";
SparqlQueryParser parser = new SparqlQueryParser();
SparqlQuery q = parser.ParseFromString(query);
Graph g = new Graph();
FileLoader.Load(g, "InferenceTest.ttl");
Object results = g.ExecuteQuery(q);
if (results is SparqlResultSet)
{
SparqlResultSet rset = (SparqlResultSet)results;
DataTable table = (DataTable)rset;
Assert.AreEqual(rset.Variables.Count(), table.Columns.Count, "Number of Columns should be equal");
Assert.AreEqual(rset.Count, table.Rows.Count, "Number of Rows should be equal");
foreach (DataRow row in table.Rows)
{
foreach (DataColumn col in table.Columns)
{
Object temp = row[col];
Console.Write(col.ColumnName + " = " + ((temp != null) ? temp.ToString() : String.Empty) + " , ");
}
Console.WriteLine();
}
}
else
{
Assert.Fail("Query should have returned a Result Set");
}
}
示例9: ParseProfileAttribute
private bool ParseProfileAttribute(RdfAParserContext context, RdfAEvaluationContext evalContext, HtmlAttribute attr)
{
String[] profiles;
if (attr.Value.Contains(" "))
{
profiles = attr.Value.Split(' ');
}
else
{
profiles = new String[] { attr.Value };
}
String prefixQuery = "PREFIX rdfa: <" + RdfANamespace + "> SELECT SAMPLE(?prefix) AS ?NamespacePrefix SAMPLE(?uri) AS ?NamespaceURI WHERE { ?s rdfa:prefix ?prefix ; rdfa:uri ?uri } GROUP BY ?s HAVING (COUNT(?prefix) = 1 && COUNT(?uri) = 1)";
String termQuery = "PREFIX rdfa: <" + RdfANamespace + "> SELECT SAMPLE(?term) AS ?Term SAMPLE(?uri) AS ?URI WHERE {?s rdfa:term ?term ; rdfa:uri ?uri } GROUP BY ?s HAVING (COUNT(?term) = 1 && COUNT(?uri) = 1)";
foreach (String profile in profiles)
{
try
{
Graph g = new Graph();
if (profile.Equals(XHtmlVocabNamespace) || profile.Equals(XHtmlVocabNamespace.Substring(0, XHtmlVocabNamespace.Length-1)))
{
//XHTML Vocabulary is a fixed vocabulary
evalContext.LocalVocabulary.Merge(new XHtmlRdfAVocabulary());
}
else
{
try
{
UriLoader.Load(g, new Uri(profile));
}
catch
{
//If we fail then we return false which indicates that the DOM subtree is ignored
this.OnWarning("Unable to retrieve a Profile document which the library could parse from the URI '" + profile + "'");
return false;
}
//Namespace Mappings
Object results = g.ExecuteQuery(prefixQuery);
if (results is SparqlResultSet)
{
SparqlResultSet rset = (SparqlResultSet)results;
foreach (SparqlResult r in rset.Results)
{
INode prefixNode = r["NamespacePrefix"];
INode nsNode = r["NamespaceURI"];
if (prefixNode.NodeType == NodeType.Literal && nsNode.NodeType == NodeType.Literal)
{
String prefix = ((ILiteralNode)prefixNode).Value.ToLower();
String ns = ((ILiteralNode)nsNode).Value;
evalContext.LocalVocabulary.AddNamespace(prefix, ns);
}
}
}
//Term Mappings
results = g.ExecuteQuery(termQuery);
if (results is SparqlResultSet)
{
SparqlResultSet rset = (SparqlResultSet)results;
foreach (SparqlResult r in rset.Results)
{
INode termNode = r["Term"];
INode uriNode = r["URI"];
if (termNode.NodeType == NodeType.Literal && uriNode.NodeType == NodeType.Literal)
{
String term = ((ILiteralNode)termNode).Value;
String uri = ((ILiteralNode)uriNode).Value;
evalContext.LocalVocabulary.AddTerm(term, uri);
}
}
}
}
}
catch
{
//Ignore errors and continue processing
this.OnWarning("Ignoring the value '" + profile + "' since this is not a valid URI or a profile document was not successfully retrieved and parsed from this URI");
return false;
}
}
return true;
}
示例10: SparqlOrderByNonDeterministic
public void SparqlOrderByNonDeterministic()
{
String query = "SELECT * WHERE { ?s ?p ?o } ORDER BY " + SparqlSpecsHelper.SparqlKeywordRand + "()";
Graph g = new Graph();
g.LoadFromEmbeddedResource("VDS.RDF.Configuration.configuration.ttl");
for (int i = 0; i < 50; i++)
{
Object results = g.ExecuteQuery(query);
if (results is SparqlResultSet)
{
Console.WriteLine("Run #" + (i+1) + " OK");
}
else
{
Assert.Fail("Did not get a SPARQL Result Set as expected");
}
}
}
示例11: ParseProfileAttribute
private bool ParseProfileAttribute(RdfACoreParserContext context, IRdfAEvent evt)
{
foreach (Uri u in this.ParseUris(context, evt["profile"]))
{
try
{
Graph g = new Graph();
#if !SILVERLIGHT
UriLoader.Load(g, u);
#else
throw new PlatformNotSupportedException("The @profile attribute is not currently supported under Silverlight/Windows Phone 7");
#endif
String prefixQuery = "PREFIX rdfa: <" + RdfAParser.RdfANamespace + "> SELECT SAMPLE(?prefix) AS ?NamespacePrefix SAMPLE(?uri) AS ?NamespaceURI WHERE { ?s rdfa:prefix ?prefix ; rdfa:uri ?uri } GROUP BY ?s HAVING (COUNT(?prefix) = 1 && COUNT(?uri) = 1)";
String termQuery = "PREFIX rdfa: <" + RdfAParser.RdfANamespace + "> SELECT SAMPLE(?term) AS ?Term SAMPLE(?uri) AS ?URI WHERE {?s rdfa:term ?term ; rdfa:uri ?uri } GROUP BY ?s HAVING (COUNT(?term) = 1 && COUNT(?uri) = 1)";
//Namespace Mappings
Object results = g.ExecuteQuery(prefixQuery);
if (results is SparqlResultSet)
{
SparqlResultSet rset = (SparqlResultSet)results;
foreach (SparqlResult r in rset.Results)
{
INode prefixNode = r["NamespacePrefix"];
INode nsNode = r["NamespaceURI"];
if (prefixNode.NodeType == NodeType.Literal && nsNode.NodeType == NodeType.Literal)
{
String prefix = ((ILiteralNode)prefixNode).Value.ToLower();
String ns = ((ILiteralNode)nsNode).Value;
context.Namespaces.AddNamespace(prefix, new Uri(ns));
}
}
}
//Term Mappings
results = g.ExecuteQuery(termQuery);
if (results is SparqlResultSet)
{
SparqlResultSet rset = (SparqlResultSet)results;
foreach (SparqlResult r in rset.Results)
{
INode termNode = r["Term"];
INode uriNode = r["URI"];
if (termNode.NodeType == NodeType.Literal && uriNode.NodeType == NodeType.Literal)
{
String term = ((ILiteralNode)termNode).Value;
String uri = ((ILiteralNode)uriNode).Value;
if (XmlSpecsHelper.IsNCName(term))
{
context.Terms.AddNamespace(term, new Uri(uri));
}
}
}
}
//Vocabulary Setting
INode vocabNode = g.GetTriplesWithPredicate(g.CreateUriNode(new Uri(RdfAParser.RdfANamespace + "vocabulary"))).Select(t => t.Object).FirstOrDefault();
if (vocabNode != null)
{
if (vocabNode.NodeType == NodeType.Literal)
{
context.DefaultVocabularyUri = new Uri(((ILiteralNode)vocabNode).Value);
}
else if (vocabNode.NodeType == NodeType.Uri)
{
context.DefaultVocabularyUri = ((IUriNode)vocabNode).Uri;
}
}
}
catch
{
return false;
}
}
return true;
}