public void Arrange(string sparqlQuery, out TripleStore store, out SparqlQuery query) { IGraph g = new VDS.RDF.Graph(); //Load triples from file OWL g.LoadFromFile(@"D:\Stud\4 course\II semester\!Diploma work\Software\Code\SPARQLtoSQL\SPARQLtoSQL\bin\Debug\combined.owl"); g.BaseUri = null; //! RdfsReasoner reasoner = new RdfsReasoner(); //Apply reasoner reasoner.Initialise(g); reasoner.Apply(g); g.BaseUri = null; //!!!!!!!! store = new TripleStore(); store.Add(g); SparqlParameterizedString queryString = new SparqlParameterizedString(); queryString.CommandText = sparqlQuery; SparqlQueryParser parser = new SparqlQueryParser(); //SparqlQuery query = parser.ParseFromString(queryString.ToString()); query = parser.ParseFromString(queryString.ToString()); Dictionary <string, string> dbURIs = new Dictionary <string, string>(); dbURIs.Add("http://www.semanticweb.org/KMS/", @"Data Source = ASUS\SQLEXPRESS; Initial Catalog = KMS; Integrated Security = True"); dbURIs.Add("http://www.semanticweb.org/LMS/", @"Data Source = ASUS\SQLEXPRESS; Initial Catalog = LMS; Integrated Security = True"); Program.ResolveBGPsFromDB(query.ToAlgebra(), g, dbURIs); Console.WriteLine(query.ToAlgebra()); Console.WriteLine(query.ToString()); }
/** * Aplica o Reasoner na ontologia * */ public StaticRdfsReasoner Reasoner() { RdfsReasoner reasoner = new RdfsReasoner(); reasoner.Initialise(Ontology); // ontologia base reasoner.Apply(Ontology, Ontology); return(reasoner); }
static void CustomQuery() { Uri prefixRDF = new Uri("http://www.w3.org/1999/02/22-rdf-syntax-ns#"); Uri prefixFilm = new Uri("http://www.semprog.com/film#"); //IGraph g = new Graph(); //Load triples from file OWL //g.LoadFromFile("film-ontology.owl"); //g.BaseUri = null; //! IGraph g = new VDS.RDF.Graph(); //Load triples from server (OWL) RdfsReasoner reasoner = new RdfsReasoner(); //Apply reasoner reasoner.Initialise(g); reasoner.Apply(g); g.BaseUri = null; //!!!!!!!! TripleStore store = new TripleStore(); store.Add(g); SparqlParameterizedString queryString = new SparqlParameterizedString(); queryString.Namespaces.AddNamespace("rdf", prefixRDF); queryString.Namespaces.AddNamespace("film", prefixFilm); queryString.CommandText = "SELECT ?who WHERE { ?who rdf:type film:Person }"; string sparql = ""; sparql = File.ReadAllText("sparql1.txt"); SparqlQueryParser parser = new SparqlQueryParser(); //SparqlQuery query = parser.ParseFromString(queryString.ToString()); SparqlQuery query = parser.ParseFromString(sparql); Console.WriteLine(query.ToAlgebra()); Console.WriteLine(query.ToString()); //ISparqlQueryProcessor processor = new LeviathanQueryProcessor(store); //process query //SparqlResultSet results = processor.ProcessQuery(query) as SparqlResultSet; ISparqlQueryProcessor processor = new MirageQueryProcessor(mapping);//new LeviathanQueryProcessor(store); //process query string results = processor.ProcessQuery(query) as string; Console.WriteLine(results); //if (results is SparqlResultSet) //{ // SparqlResultSet rset = (SparqlResultSet)results; // foreach (SparqlResult result in rset) // { // Console.WriteLine(result); // } //} }
public void SparqlUpdateInsertCommand2() { SparqlParameterizedString command = new SparqlParameterizedString(); command.Namespaces.AddNamespace("rdf", new Uri(NamespaceMapper.RDF)); command.Namespaces.AddNamespace("rdfs", new Uri(NamespaceMapper.RDFS)); command.CommandText = "INSERT { ?s rdf:type ?class } USING <http://example.org/temp> WHERE { ?s a ?type . ?type rdfs:subClassOf+ ?class };"; command.CommandText += "INSERT { ?s ?property ?value } USING <http://example.org/temp> WHERE {?s ?p ?value . ?p rdfs:subPropertyOf+ ?property };"; command.CommandText += "INSERT { ?s rdf:type rdfs:Class } USING <http://example.org/temp> WHERE { ?s rdfs:subClassOf ?class };"; command.CommandText += "INSERT { ?s rdf:type rdf:Property } USING <http://example.org/temp> WHERE { ?s rdfs:subPropertyOf ?property };"; TripleStore store = new TripleStore(); Graph g = new Graph(); FileLoader.Load(g, "InferenceTest.ttl"); g.BaseUri = new Uri("http://example.org/temp"); store.Add(g); int origTriples = g.Triples.Count; SparqlUpdateParser parser = new SparqlUpdateParser(); SparqlUpdateCommandSet cmds = parser.ParseFromString(command); LeviathanUpdateProcessor processor = new LeviathanUpdateProcessor(store); processor.ProcessCommandSet(cmds); Assert.AreEqual(origTriples, g.Triples.Count, "Triples in input Graph shouldn't have changed as INSERTs should have gone to the default graph"); IGraph def = store[null]; TestTools.ShowGraph(def); Console.WriteLine(); //Apply a RDFS reasoner over the original input and output it into another graph //Should be equivalent to the default Graph Graph h = new Graph(); RdfsReasoner reasoner = new RdfsReasoner(); reasoner.Apply(g, h); TestTools.ShowGraph(h); GraphDiffReport report = h.Difference(def); if (!report.AreEqual) { TestTools.ShowDifferences(report); Assert.IsTrue(report.RemovedTriples.Count() == 1, "Should have only 1 missing Triple (due to rdfs:domain inference which is hard to encode in an INSERT command)"); } }
public void SparqlUpdateInsertCommand() { SparqlParameterizedString command = new SparqlParameterizedString(); command.Namespaces.AddNamespace("rdf", new Uri(NamespaceMapper.RDF)); command.Namespaces.AddNamespace("rdfs", new Uri(NamespaceMapper.RDFS)); command.CommandText = "INSERT { ?s rdf:type ?class } WHERE { ?s a ?type . ?type rdfs:subClassOf+ ?class };"; command.CommandText += "INSERT { ?s ?property ?value } WHERE {?s ?p ?value . ?p rdfs:subPropertyOf+ ?property };"; command.CommandText += "INSERT { ?s rdf:type rdfs:Class } WHERE { ?s rdfs:subClassOf ?class };"; command.CommandText += "INSERT { ?s rdf:type rdf:Property } WHERE { ?s rdfs:subPropertyOf ?property };"; TripleStore store = new TripleStore(); Graph g = new Graph(); FileLoader.Load(g, "InferenceTest.ttl"); g.Retract(g.Triples.Where(t => !t.IsGroundTriple).ToList()); g.BaseUri = null; store.Add(g); SparqlUpdateParser parser = new SparqlUpdateParser(); SparqlUpdateCommandSet cmds = parser.ParseFromString(command); LeviathanUpdateProcessor processor = new LeviathanUpdateProcessor(store); processor.ProcessCommandSet(cmds); TestTools.ShowGraph(g); Console.WriteLine(); //Now reload the test data and apply an RDFS reasoner over it //This should give us a Graph equivalent to the one created by the previous INSERT commands Graph h = new Graph(); FileLoader.Load(h, "InferenceTest.ttl"); h.Retract(h.Triples.Where(t => !t.IsGroundTriple).ToList()); RdfsReasoner reasoner = new RdfsReasoner(); reasoner.Apply(h); GraphDiffReport diff = h.Difference(g); if (!diff.AreEqual) { TestTools.ShowDifferences(diff); } Assert.AreEqual(h, g, "Graphs should be equal"); }
static void CustomQueryLMS_KMS() { IGraph g = new VDS.RDF.Graph(); //Load triples from file OWL g.LoadFromFile("combined.owl"); g.BaseUri = null; //! //INode subj = g.CreateUriNode(new Uri("http://www.semanticweb.org/KMS/User/1")); //INode pred = g.CreateUriNode(new Uri("http://www.w3.org/1999/02/22-rdf-syntax-ns#type")); //INode obj = g.CreateUriNode(new Uri("http://www.semanticweb.org/KMS/User")); //g.Assert(new Triple(subj,pred,obj)); RdfsReasoner reasoner = new RdfsReasoner(); //Apply reasoner reasoner.Initialise(g); reasoner.Apply(g); g.BaseUri = null; //!!!!!!!! TripleStore store = new TripleStore(); store.Add(g); SparqlParameterizedString queryString = new SparqlParameterizedString(); //queryString.CommandText = @"SELECT * WHERE { ?user <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.semanticweb.org/KMS/User>. // OPTIONAL {?user <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.semanticweb.org/LMS/User>}}"; // queryString.CommandText = @"SELECT * //WHERE { ?usr <http://www.semanticweb.org/LMS/User#EMAIL> ?email. // ?usr1 <http://www.semanticweb.org/KMS/User#EMAIL> ?email}"; //queryString.CommandText = @"SELECT * //WHERE { ?usr <http://www.semanticweb.org/LMS/User#ROLE_ID> ?roleID. // ?role <http://www.semanticweb.org/LMS/Role#ID> ?roleID. // ?role <http://www.semanticweb.org/LMS/Role#NAME> ""Teacher""}"; //queryString.Namespaces.AddNamespace("owl", new Uri("http://www.w3.org/2002/07/owl#")); //queryString.CommandText = @"SELECT * WHERE { // ?property owl:equivalentProperty ?property1 // filter regex(str(?property), '^http://www.semanticweb.org/FEDERATED/Kunde#NAME$')}"; queryString.CommandText = @"SELECT * WHERE { ?s <http://www.semanticweb.org/FEDERATED/Kunde#EMAIL> ?email. ?s1 <http://www.semanticweb.org/LMS/User#EMAIL> ?email}"; SparqlQueryParser parser = new SparqlQueryParser(); //SparqlQuery query = parser.ParseFromString(queryString.ToString()); SparqlQuery query = parser.ParseFromString(queryString.ToString()); Dictionary <string, string> dbURIs = new Dictionary <string, string>(); dbURIs.Add("http://www.semanticweb.org/KMS/", @"Data Source = ASUS\SQLEXPRESS; Initial Catalog = KMS; Integrated Security = True"); dbURIs.Add("http://www.semanticweb.org/LMS/", @"Data Source = ASUS\SQLEXPRESS; Initial Catalog = LMS; Integrated Security = True"); ResolveBGPsFromDB(query.ToAlgebra(), g, dbURIs); Console.WriteLine(query.ToAlgebra()); Console.WriteLine(query.ToString()); //ISparqlQueryProcessor processor = new LeviathanQueryProcessor(store); //process query //SparqlResultSet results = processor.ProcessQuery(query) as SparqlResultSet; ISparqlQueryProcessor processor = new QuantumQueryProcessor(store);//new LeviathanQueryProcessor(store); //process query var results = processor.ProcessQuery(query) as SparqlResultSet; if (results is SparqlResultSet) { SparqlResultSet rset = (SparqlResultSet)results; foreach (SparqlResult result in rset) { Console.WriteLine(result); } } }