public void SparqlOptimiserQueryWeightedSimple2() { try { const string query = @"PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT * WHERE { ?s rdfs:label ?label . ?s rdfs:comment ?comment . }"; Graph weightings = new Graph(); #if PORTABLE weightings.LoadFromEmbeddedResource("VDS.RDF.Query.SampleWeightings.n3, dotNetRDF.Portable.Test"); #else weightings.LoadFromEmbeddedResource("VDS.RDF.Query.SampleWeightings.n3, dotNetRDF.Test"); #endif SparqlOptimiser.QueryOptimiser = new WeightedOptimiser(weightings); SparqlQuery q = this._parser.ParseFromString(query); Console.WriteLine(this._formatter.Format(q)); Assert.IsTrue(q.RootGraphPattern.TriplePatterns[0].Variables.Contains("comment"), "First Triple Pattern should contain ?comment"); Assert.IsTrue(q.RootGraphPattern.TriplePatterns[1].Variables.Contains("label"), "Second Triple Pattern should contain ?label"); } finally { SparqlOptimiser.ResetOptimisers(); } }
private void DisableFullTextIndex() { if (this._dataset is WebDemandDataset) { WebDemandDataset ds = (WebDemandDataset)this._dataset; if (ds.UnderlyingDataset is FullTextIndexedDataset) { this._dataset = ds.UnderlyingDataset; this.DisableFullTextIndex(); this._dataset = new WebDemandDataset(this._dataset); } } else if (this._dataset is FullTextIndexedDataset) { SparqlOptimiser.RemoveOptimiser(this._ftOptimiser); this._ftOptimiser = null; this._ftSearcher.Dispose(); this._ftSearcher = null; this._dataset = ((FullTextIndexedDataset)this._dataset).UnderlyingDataset; this._ftIndexer.Dispose(); this._ftIndexer = null; this._ftIndex.Dispose(); this._ftIndex = null; } this._processor = new LeviathanQueryProcessor(this._dataset); }
public void SparqlOptimiserQueryWeightedUnknowns2() { try { String query = @"PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT * WHERE { ?s <http://weightings/PredicatesLast> ?o . <http://weightings/SubjectsFirst> ?p ?o . ?s ?p 'Objects In Middle' . }"; Graph weightings = new Graph(); #if PORTABLE weightings.LoadFromEmbeddedResource("VDS.RDF.Query.SampleWeightings.n3, dotNetRDF.Portable.Test"); #else weightings.LoadFromEmbeddedResource("VDS.RDF.Query.SampleWeightings.n3, dotNetRDF.Test"); #endif SparqlOptimiser.QueryOptimiser = new WeightedOptimiser(weightings); SparqlQuery q = this._parser.ParseFromString(query); Console.WriteLine(this._formatter.Format(q)); Assert.IsTrue(q.RootGraphPattern.TriplePatterns[0].Variables.Intersect(new String[] { "p", "o" }).Count() == 2, "First Triple Pattern should contain ?p and ?o"); Assert.IsTrue(q.RootGraphPattern.TriplePatterns[1].Variables.Intersect(new String[] { "s", "p" }).Count() == 2, "Second Triple Pattern should contain ?s and ?p"); Assert.IsTrue(q.RootGraphPattern.TriplePatterns[2].Variables.Intersect(new String[] { "s", "o" }).Count() == 2, "Second Triple Pattern should contain ?s and ?o"); } finally { SparqlOptimiser.ResetOptimisers(); } }
public void SparqlOptimiserQueryWeightedSimple4() { try { const string query = @"PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT * WHERE { ?s a rdfs:Class . ?s rdfs:label 'example' . }"; Graph weightings = new Graph(); #if PORTABLE weightings.LoadFromEmbeddedResource("VDS.RDF.Query.SampleWeightings.n3, dotNetRDF.Portable.Test"); #else weightings.LoadFromEmbeddedResource("VDS.RDF.Query.SampleWeightings.n3, dotNetRDF.Test"); #endif SparqlOptimiser.QueryOptimiser = new WeightedOptimiser(weightings); SparqlQuery q = this._parser.ParseFromString(query); Console.WriteLine(this._formatter.Format(q)); Assert.IsTrue(((NodeMatchPattern)((IMatchTriplePattern)q.RootGraphPattern.TriplePatterns[0]).Object).Node.NodeType == NodeType.Literal, "First Triple Pattern should have object 'example'"); Assert.IsTrue(((NodeMatchPattern)((IMatchTriplePattern)q.RootGraphPattern.TriplePatterns[1]).Object).Node.NodeType == NodeType.Uri, "Second Triple Pattern should have object rdfs:Class"); } finally { SparqlOptimiser.ResetOptimisers(); } }
public void SparqlOptimiserQueryWeightedSimple() { try { String query = @"PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT * WHERE { ?s ?p ?o . ?s rdfs:label ?label . }"; Graph weightings = new Graph(); weightings.LoadFromEmbeddedResource("VDS.RDF.Query.SampleWeightings.n3, dotNetRDF.Test"); SparqlOptimiser.QueryOptimiser = new WeightedOptimiser(weightings); SparqlQuery q = this._parser.ParseFromString(query); Console.WriteLine(this._formatter.Format(q)); Assert.IsFalse(q.RootGraphPattern.TriplePatterns[0].IsAcceptAll, "First Triple Pattern should not be the ?s ?p ?o Pattern"); Assert.IsTrue(q.RootGraphPattern.TriplePatterns[1].IsAcceptAll, "Second Triple Pattern should be the ?s ?p ?o pattern"); } finally { SparqlOptimiser.ResetOptimisers(); } }
public void SparqlOptimiserQueryWeightedUnknowns() { try { String query = @"PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT * WHERE { ?s rdfs:comment 'Predicates are weighted less than subjects' . rdfs:comment rdfs:comment 'Subjects are weighted higher than predicates' . }"; Graph weightings = new Graph(); weightings.LoadFromEmbeddedResource("VDS.RDF.Query.SampleWeightings.n3, dotNetRDF.Test"); SparqlOptimiser.QueryOptimiser = new WeightedOptimiser(weightings); SparqlQuery q = this._parser.ParseFromString(query); Console.WriteLine(this._formatter.Format(q)); Assert.IsFalse(q.RootGraphPattern.TriplePatterns[0].Variables.Contains("s"), "First Triple Pattern should not contain ?s"); Assert.IsTrue(q.RootGraphPattern.TriplePatterns[1].Variables.Contains("s"), "Second Triple Pattern should contain ?s"); } finally { SparqlOptimiser.ResetOptimisers(); } }
private void EnableFullTextIndex() { if (this._dataset is FullTextIndexedDataset) { //Nothing to do } else if (this._dataset is WebDemandDataset) { WebDemandDataset ds = (WebDemandDataset)this._dataset; this._dataset = ds.UnderlyingDataset; this.EnableFullTextIndex(); this._dataset = new WebDemandDataset(this._dataset); } else { //Create and ensure index ready for use this._ftIndex = new RAMDirectory(); var writer = new IndexWriter(this._ftIndex, new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_30), IndexWriter.MaxFieldLength.UNLIMITED); writer.Dispose(); //Create Indexer and wrap dataset this._ftIndexer = new LuceneObjectsIndexer(this._ftIndex, new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_30), new DefaultIndexSchema()); if (this._dataset is WebDemandDataset) { //Web Demand needs to go around Full Text as we want to index on demand loaded content this._dataset = new WebDemandDataset(new FullTextIndexedDataset(((WebDemandDataset)this._dataset).UnderlyingDataset, this._ftIndexer, true)); } else { this._dataset = new FullTextIndexedDataset(this._dataset, this._ftIndexer, true); } //Create and Register Optimizer this._ftSearcher = new LuceneSearchProvider(Lucene.Net.Util.Version.LUCENE_29, this._ftIndex); this._ftOptimiser = new FullTextOptimiser(this._ftSearcher); SparqlOptimiser.AddOptimiser(this._ftOptimiser); } this._processor = new LeviathanQueryProcessor(this._dataset); }
static BrightstarQueryProcessor() { SparqlOptimiser.AddOptimiser(new VariableEqualsOptimizer()); }
/// <summary> /// Perform any initialization tasks /// </summary> public void Initialize(IPipelines pipelines) { SparqlOptimiser.RemoveOptimiser(SparqlOptimiser.AlgebraOptimisers.FirstOrDefault(o => o.GetType() == typeof(LazyBgpOptimiser))); }