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;
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
    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);
    }
Exemplo n.º 4
0
    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();
        }
    }
Exemplo n.º 7
0
 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 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);
        }
Exemplo n.º 9
0
    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();
    }