public object Search(queryrequest xml) { SemWeb.Query.Query query = null; string q = string.Empty; try { query = new SparqlEngine(new StringReader(xml.query)); } catch (QueryFormatException ex) { var malformed = new malformedquery(); malformed.faultdetails = ex.Message; return malformed; } // Load the data from sql server SemWeb.Stores.SQLStore store; string connstr = ConfigurationManager.ConnectionStrings["SemWebDB"].ConnectionString; DebugLogging.Log(connstr); store = (SemWeb.Stores.SQLStore)SemWeb.Store.CreateForInput(connstr); //Create a Sink for the results to be writen once the query is run. MemoryStream ms = new MemoryStream(); XmlTextWriter writer = new XmlTextWriter(ms, System.Text.Encoding.UTF8); QueryResultSink sink = new SparqlXmlQuerySink(writer); try { // Run the query. query.Run(store, sink); } catch (Exception ex) { // Run the query. query.Run(store, sink); DebugLogging.Log("Run the query a second time"); DebugLogging.Log(ex.Message); } //flush the writer then load the memory stream writer.Flush(); ms.Seek(0, SeekOrigin.Begin); //Write the memory stream out to the response. ASCIIEncoding ascii = new ASCIIEncoding(); DebugLogging.Log(ascii.GetString(ms.ToArray()).Replace("???", "")); writer.Close(); DebugLogging.Log("End of Processing"); return SerializeXML.DeserializeObject(ascii.GetString(ms.ToArray()).Replace("???", ""), typeof(sparql)) as sparql; }
public void InteropSemWebGraphQuery() { Graph g = new Graph(); FileLoader.Load(g, "InferenceTest.ttl"); GraphSource source = new GraphSource(g); Console.WriteLine("Query for Cars and their Speeds"); Console.WriteLine(); SemWeb.Query.SparqlXmlQuerySink sink = new SemWeb.Query.SparqlXmlQuerySink(Console.Out); Variable car = new Variable("car"); Statement[] graphPattern = new Statement[] { new Statement(car, new Entity(RdfSpecsHelper.RdfType), new Entity("http://example.org/vehicles/Car")), new Statement(car, new Entity("http://example.org/vehicles/Speed"), new Variable("speed")) }; source.Query(graphPattern, new SemWeb.Query.QueryOptions(), sink); Console.WriteLine("Query for the 1st Car and it's Speed"); Console.WriteLine(); sink = new SemWeb.Query.SparqlXmlQuerySink(Console.Out); graphPattern = new Statement[] { new Statement(car, new Entity(RdfSpecsHelper.RdfType), new Entity("http://example.org/vehicles/Car")), new Statement(car, new Entity("http://example.org/vehicles/Speed"), new Variable("speed")) }; SemWeb.Query.QueryOptions options = new SemWeb.Query.QueryOptions(); options.Limit = 1; source.Query(graphPattern, options, sink); }
protected override void OnLoad(EventArgs e) { RdfStore = new MemoryStore(); RdfStore.Import( new RdfXmlReader(@"c:\temp\_1.rdf")); string depRules = @" @prefix n: <urn:schemas-nreco:metadata:terms#>. @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>. @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>. { ?a n:dependentFrom ?b . ?b n:dependentFrom ?c .} => {?a n:dependentFrom ?c}. { ?a n:dependentFrom ?b } => { ?b n:usedBy ?a}. { ?a n:usedBy ?b . ?b n:usedBy ?c .} => {?a n:usedBy ?c}. "; Euler engine = new Euler(new N3Reader(new StringReader(depRules))); RdfStore.AddReasoner(new RDFS(RdfStore)); RdfStore.AddReasoner(engine); string rdfQuery = @" @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>. @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>. @prefix p: <urn:schemas-nreco:metadata:dotnet:property#>. @prefix t: <urn:schemas-nreco:metadata:dotnet:type#>. @prefix w: <file:///d:/Vitalik/GoogleCode/NReco/examples/NReco.Examples.WebApp/web/#>. @prefix cso: <http://cos.ontoware.org/cso#>. @prefix n: <urn:schemas-nreco:metadata:terms#>. w:db n:usedBy ?t2. "; Query query = new GraphMatch(new N3Reader(new StringReader(rdfQuery))); StringWriter wr = new StringWriter(); QueryResultSink sink = new SparqlXmlQuerySink(wr); query.Run(RdfStore, sink); Result = wr.ToString(); base.OnLoad(e); }
public static void Main(string[] argv) { if (argv.Length < 3) { Console.WriteLine("Usage: query.exe format queryfile datafile"); return; } string format = argv[0]; string queryfile = argv[1]; string datafile = argv[2]; Query query; if (format == "rsquary") { // Create a simple-entailment "RSquary" query // from the N3 file. query = new GraphMatch(new N3Reader(queryfile)); } else { // Create a SPARQL query by reading the file's // contents. query = new SparqlEngine(new StreamReader(queryfile)); } // Load the data file from disk MemoryStore data = new MemoryStore(); data.Import(new N3Reader(datafile)); // First, print results in SPARQL XML Results format... // Create a result sink where results are written to. QueryResultSink sink = new SparqlXmlQuerySink(Console.Out); // Run the query. query.Run(data, sink); // Second, print the results via our own custom QueryResultSink... query.Run(data, new PrintQuerySink()); }
protected void myWizard_NextButtonClick(object sender, System.Web.UI.WebControls.WizardNavigationEventArgs e) { Query query; string queryfile = @"C:\Query.txt"; string datafile = @"C:\KLM11.n3"; string str = "PREFIX table:<http://www.owl-ontologies.com/Ontology1183162121.owl#> \n " + "SELECT distinct ?name ?symp \n " + "FROM <C:/KLM11.owl> \n " + " where \n" + "{\n" + " ?Disease table:disease ?name.\n" + " ?Disease table:symptoms ?symp.\n" + " ?Disease table:classification ?class.\n" + " ?class table:class-name \"" + RadioButtonList1.SelectedItem.Text + "\" }\n"; TextWriter stringWriter = new StringWriter(); stringWriter.Write(str); query = new SparqlEngine(str); MemoryStore data = new MemoryStore(); data.Import(new N3Reader(datafile)); // First, print results in SPARQL XML Results format... // Create a result sink where results are written to. XmlTextWriter writer = new XmlTextWriter("C:\\temp\\xmltest3.xml", null); QueryResultSink sink = new SparqlXmlQuerySink(writer); // Run the query. query.Run(data, sink); writer.Close(); TextWriter stringWriter1 = new StringWriter(); dt.Columns.Add("Disease"); dt.Columns.Add("Symptoms"); query.Run(data, stringWriter1); //Response.Write(stringWriter1.ToString()); FileStream fs = new FileStream("C:\\temp\\xmltest3.xml", FileMode.Open, FileAccess.Read, FileShare.ReadWrite); xmldoc = new XmlDocument(); xmldoc.Load(fs); XmlNodeList xmlnode = xmldoc.GetElementsByTagName("binding"); Console.WriteLine("Here is the list of catalogs\n\n"); for (int i = 0; i < xmlnode.Count; i++) { XmlAttributeCollection xmlattrc = xmlnode[i].Attributes; //XML Attribute Name and Value returned //Example: <Book id = "001"> //First Child of the XML file - Catalog.xml - returned //Example: <Author>Mark</Author> dt.Rows.Add(xmlnode[i].NextSibling.InnerText.Replace("http://www.owl-ontologies.com/Ontology1183162121.owl#", ""), xmlnode[i].InnerText.Replace("http://www.owl-ontologies.com/Ontology1183162121.owl#", "")); i = i + 1; } fs.Close(); str = string.Empty; str = "PREFIX table:<http://www.owl-ontologies.com/Ontology1183162121.owl#> \n " + "SELECT distinct ?symp \n " + "FROM <C:/KLM11.owl> \n " + " where \n" + "{\n" + " ?Disease table:disease ?name.\n" + " ?Disease table:symptoms ?symp.\n" + " ?Disease table:classification ?class.\n" + " ?class table:class-name \"" + RadioButtonList1.SelectedItem.Text + "\" }\n"; // Response.Write("Catalog Finished"); query = new SparqlEngine(str); data = new MemoryStore(); data.Import(new N3Reader(datafile)); PrintQuerySink psink = new PrintQuerySink(); query.Run(data, psink); Question.Text = "Do you have " + psink.al[0].ToString() + "?"; a = new ArrayList(); Session["array"] = dt; processQuestions(); Session["item"] = 0; Session["a"] = a; Session["arraylist"] = psink.al; GridView1.DataSource = null; //foreach (string s in psink.array) //{ // CheckBoxList1.Items.Add(new ListItem(s)); //} //CheckBoxList1. }
protected void Button1_Click(object sender, EventArgs e) { Query query; XmlDocument xmldoc; DataTable dt = new DataTable(); PrintQuerySink psink = new PrintQuerySink(); dt.Columns.Add("Name"); dt.Columns.Add("Disease"); dt.Columns.Add("Symptom"); dt.Columns.Add("Medication"); DirectoryInfo dir = new DirectoryInfo(@"C:\PatientOWLFiles"); FileInfo[] n3files = dir.GetFiles("*.n3"); foreach (FileInfo f in n3files) { string datafile = f.FullName; string str = string.Empty; if (DropDownList1.SelectedIndex == 0) { str = "PREFIX table:<http://www.owl-ontologies.com/Ontology1183162121.owl#> \n " + "SELECT distinct ?dis ?symp ?medi \n " + "from <" + f.FullName + ">\n " + " where \n" + "{\n" + " ?Disease table:disease ?dis.\n" + " ?dis table:symptoms ?sym. \n" + " ?dis table:medication ?med. \n" + "?dis table:disease-name ?dise.\n" + "?sym table:symp-name ?symp.\n" + "?med table:med-name ?medi.\n"; str = str + "Filter regex(?dise, \"" + TextBox1.Text + "\" ,\"i\").\n"; } else if (DropDownList1.SelectedIndex == 1) { str = "PREFIX table:<http://www.owl-ontologies.com/Ontology1183162121.owl#> \n " + "SELECT distinct ?dis ?symp ?medi \n " + "from <" + f.FullName + ">\n " + " where \n" + "{\n" + " ?Disease table:disease ?dis.\n" + " ?dis table:symptoms ?sym. \n" + " ?dis table:medication ?med. \n" + "?dis table:disease-name ?dise.\n" + "?sym table:symp-name ?symp.\n" + "?med table:med-name ?medi.\n"; str = str + "Filter regex(?symp, \"" + TextBox1.Text + "\" ,\"i\").\n"; } else if (DropDownList1.SelectedIndex == 2) { str = "PREFIX table:<http://www.owl-ontologies.com/Ontology1183162121.owl#> \n " + "SELECT distinct ?dis ?symp ?medi \n " + "from <" + f.FullName + ">\n " + " where \n" + "{\n" + " ?Disease table:disease ?dis.\n" + " ?dis table:symptoms ?sym. \n" + " ?dis table:medication ?med. \n" + "?dis table:disease-name ?dise.\n" + "?sym table:symp-name ?symp.\n" + "?med table:med-name ?medi.\n"; str = str + "Filter regex(?medi, \"" + TextBox1.Text + "\" ,\"i\").\n"; } str = str + " }\n"; TextWriter stringWriter = new StringWriter(); stringWriter.Write(str); query = new SparqlEngine(str); MemoryStore data = new MemoryStore(); data.Import(new N3Reader(datafile)); // First, print results in SPARQL XML Results format... // Create a result sink where results are written to. XmlTextWriter writer = new XmlTextWriter("C:\\temp\\xmltest3.xml", null); QueryResultSink sink = new SparqlXmlQuerySink(writer); // Run the query. query.Run(data, sink); writer.Close(); TextWriter stringWriter1 = new StringWriter(); query.Run(data, stringWriter1); psink._pName = f.Name.Replace(".n3", ""); query.Run(data, psink); //Response.Write(stringWriter1.ToString()); // FileStream fs = new FileStream("C:\\temp\\xmltest3.xml", FileMode.Open, FileAccess.Read, FileShare.ReadWrite); // xmldoc = new XmlDocument(); // xmldoc.Load(fs); // XmlNodeList xmlnode = xmldoc.GetElementsByTagName("binding"); // for (int i = 0; i < xmlnode.Count; i++) // { // XmlAttributeCollection xmlattrc = xmlnode[i].Attributes; // //XML Attribute Name and Value returned // //Example: <Book id = "001"> // //First Child of the XML file - Catalog.xml - returned // //Example: <Author>Mark</Author> // i = i + 1; // dt.Rows.Add(f.Name.Replace(".n3",""),xmlnode[i].NextSibling.InnerText.Replace("http://www.owl-ontologies.com/Ontology1183162121.owl#", ""), xmlnode[i-1].InnerText.Replace("http://www.owl-ontologies.com/Ontology1183162121.owl#", ""),xmlnode[i].InnerText.Replace("http://www.owl-ontologies.com/Ontology1183162121.owl#", "")); // } // fs.Close(); } if (psink.list.Count > 0) { GridView1.DataSource = null; Result r = new Result(); r.R = psink.list; GridView1.DataSource = psink.list; GridView1.DataBind(); GridView1.Visible = true; lblMessage.Visible = false; } else { lblMessage.Text = "No records found"; lblMessage.Visible = true; dt = new DataTable(); } }
public void Select(SelectableSource source, TextWriter output) { QueryResultSink sink; if (MimeType == SparqlXmlQuerySink.MimeType || MimeType == "text/xml") sink = new SparqlXmlQuerySink(output); //else if (MimeType == "text/html") // sink = new HTMLQuerySink(output); //else if (MimeType == "text/csv") // sink = new CSVQuerySink(output); else throw new InvalidOperationException("MIME type not supported."); Select(source, sink); }
public static void Main(string[] args) { System.Net.ServicePointManager.Expect100Continue = false; Opts opts = new Opts(); opts.ProcessArgs(args); if (opts.RemainingArguments.Length != 1) { opts.DoHelp(); return; } string baseuri = "query://query/#"; QueryResultSink qs; if (opts.format == "simple") qs = new PrintQuerySink(); else if (opts.format == "html") qs = new HTMLQuerySink(Console.Out); else if (opts.format == "xml") qs = new SparqlXmlQuerySink(Console.Out); else if (opts.format == "lubm") qs = new LUBMReferenceAnswerOutputQuerySink(); else if (opts.format == "csv") qs = new CSVQuerySink(); else { Console.Error.WriteLine("Invalid output format."); return; } Query query; MemoryStore queryModel = null; #if !DOTNET2 System.Collections.ICollection queryModelVars = null; #else System.Collections.Generic.ICollection<Variable> queryModelVars = null; #endif Store model = Store.Create(opts.RemainingArguments[0]); if (opts.type == "rsquary") { RdfReader queryparser = RdfReader.Create("n3", "-"); queryparser.BaseUri = baseuri; queryModel = new MemoryStore(queryparser); queryModelVars = queryparser.Variables; query = new GraphMatch(queryModel); } else if (opts.type == "sparql" && model.DataSources.Count == 1 && model.DataSources[0] is SemWeb.Remote.SparqlSource) { string querystring = Console.In.ReadToEnd(); ((SemWeb.Remote.SparqlSource)model.DataSources[0]).RunSparqlQuery(querystring, Console.Out); return; } else if (opts.type == "sparql") { string querystring = Console.In.ReadToEnd(); query = new SparqlEngine(querystring); } else { throw new Exception("Invalid query format: " + opts.type); } if (opts.limit > 0) query.ReturnLimit = opts.limit; //Console.Error.WriteLine(query.GetExplanation()); if (query is SparqlEngine && ((SparqlEngine)query).Type != SparqlEngine.QueryType.Select) { SparqlEngine sparql = (SparqlEngine)query; sparql.Run(model, Console.Out); } else if (model is QueryableSource && queryModel != null) { SemWeb.Query.QueryOptions qopts = new SemWeb.Query.QueryOptions(); qopts.DistinguishedVariables = queryModelVars; // Replace bnodes in the query with Variables int bnodectr = 0; foreach (Entity e in queryModel.GetEntities()) { if (e is BNode && !(e is Variable)) { BNode b = (BNode)e; queryModel.Replace(e, new Variable(b.LocalName != null ? b.LocalName : "bnodevar" + (++bnodectr))); } } model.Query(queryModel.ToArray(), qopts, qs); } else { query.Run(model, qs); } if (qs is IDisposable) ((IDisposable)qs).Dispose(); }