Example #1
0
 public void TestRetrieveSingleFilm()
 {
     const string odataQuery = "http://example.org/odata/Films('Un_Chien_Andalou')";
     var parsedQuery = QueryDescriptorQueryNode.ParseUri(
         new Uri(odataQuery), new Uri(_odataBase), _dbpediaModel);
     var sparqlGenerator = new SparqlGenerator(_dbpediaMap);
     sparqlGenerator.ProcessQuery(parsedQuery);
     Console.WriteLine(sparqlGenerator.SparqlQueryModel.GetSparqlRepresentation());
     var mockRequest = new Mock<IODataRequestMessage>();
     mockRequest.Setup(m => m.Url).Returns(new Uri(odataQuery));
     var mockMessage = new Mock<IODataResponseMessage>();
     var outputStream = new MemoryStream();
     mockMessage.Setup(m => m.GetStream()).Returns(outputStream);
         var feedGenerator = new ODataFeedGenerator(mockRequest.Object, mockMessage.Object, _dbpediaMap, _odataBase, new ODataMessageWriterSettings{Indent = true});
     sparqlGenerator.SparqlQueryModel.Execute(_sparqlEndpoint, feedGenerator);
     outputStream.Seek(0, SeekOrigin.Begin);
     var validator = new XPathValidator(outputStream);
     validator.AddNamespace("atom", "http://www.w3.org/2005/Atom");
     validator.AddNamespace("d", "http://schemas.microsoft.com/ado/2007/08/dataservices");
     validator.AddNamespace("m", "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata");
     Console.WriteLine(validator.ToString());
     validator.AssertRoot("atom:entry");
     validator.AssertXPathValue("/atom:entry/atom:id", "http://example.org/odata/Films('Un_Chien_Andalou')");
     validator.AssertXPathValue("/atom:entry/atom:title", "");
     validator.AssertXPathValue("/atom:entry/atom:content/m:properties/d:Name", "Un Chien Andalou");
     validator.AssertXPathValue("/atom:entry/atom:content/m:properties/d:Runtime", "960.0");
     validator.AssertXPathValue("/atom:entry/atom:link[@rel='http://schemas.microsoft.com/ado/2007/08/dataservices/related/Director']/@href", "http://example.org/odata/Films('Un_Chien_Andalou')/Director");
 }
Example #2
0
        public void TestRetrieveSingleFilm()
        {
            const string odataQuery  = "http://example.org/odata/Films('Un_Chien_Andalou')";
            var          parsedQuery = QueryDescriptorQueryNode.ParseUri(
                new Uri(odataQuery), new Uri(_odataBase), _dbpediaModel);
            var sparqlGenerator = new SparqlGenerator(_dbpediaMap);

            sparqlGenerator.ProcessQuery(parsedQuery);
            Console.WriteLine(sparqlGenerator.SparqlQueryModel.GetSparqlRepresentation());
            var mockRequest = new Mock <IODataRequestMessage>();

            mockRequest.Setup(m => m.Url).Returns(new Uri(odataQuery));
            var mockMessage  = new Mock <IODataResponseMessage>();
            var outputStream = new MemoryStream();

            mockMessage.Setup(m => m.GetStream()).Returns(outputStream);
            var feedGenerator = new ODataFeedGenerator(mockRequest.Object, mockMessage.Object, _dbpediaMap, _odataBase, new ODataMessageWriterSettings {
                Indent = true
            });

            sparqlGenerator.SparqlQueryModel.Execute(_sparqlEndpoint, feedGenerator);
            outputStream.Seek(0, SeekOrigin.Begin);
            var validator = new XPathValidator(outputStream);

            validator.AddNamespace("atom", "http://www.w3.org/2005/Atom");
            validator.AddNamespace("d", "http://schemas.microsoft.com/ado/2007/08/dataservices");
            validator.AddNamespace("m", "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata");
            Console.WriteLine(validator.ToString());
            validator.AssertRoot("atom:entry");
            validator.AssertXPathValue("/atom:entry/atom:id", "http://example.org/odata/Films('Un_Chien_Andalou')");
            validator.AssertXPathValue("/atom:entry/atom:title", "");
            validator.AssertXPathValue("/atom:entry/atom:content/m:properties/d:Name", "Un Chien Andalou");
            validator.AssertXPathValue("/atom:entry/atom:content/m:properties/d:Runtime", "960.0");
            validator.AssertXPathValue("/atom:entry/atom:link[@rel='http://schemas.microsoft.com/ado/2007/08/dataservices/related/Director']/@href", "http://example.org/odata/Films('Un_Chien_Andalou')/Director");
        }
Example #3
0
        private XPathValidator GenerateAndExecuteSparql(string odataQuery, SparqlMap sparqlMap, ODataVersion odataVersion = ODataVersion.V3)
        {
            var parsedQuery = QueryDescriptorQueryNode.ParseUri(
                new Uri(odataQuery),
                new Uri(_odataBase),
                _dbpediaModel);
            var sparqlGenerator = new SparqlGenerator(sparqlMap, "en");

            sparqlGenerator.ProcessQuery(parsedQuery);
            var mockRequest = new Mock <IODataRequestMessage>();

            mockRequest.Setup(m => m.Url).Returns(new Uri(odataQuery));
            var mockMessage  = new Mock <IODataResponseMessage>();
            var outputStream = new MemoryStream();

            mockMessage.Setup(m => m.GetStream()).Returns(outputStream);
            var feedGenerator = new ODataFeedGenerator(
                mockRequest.Object,
                mockMessage.Object, sparqlMap, _odataBase,
                new ODataMessageWriterSettings {
                Indent = true, Version = odataVersion
            });

            Console.WriteLine(sparqlGenerator.SparqlQueryModel.GetSparqlRepresentation());
            sparqlGenerator.SparqlQueryModel.Execute(_sparqlEndpoint, feedGenerator);
            outputStream.Seek(0, SeekOrigin.Begin);
            var validator = new XPathValidator(outputStream);

            validator.AddNamespace("atom", "http://www.w3.org/2005/Atom");
            validator.AddNamespace("d", "http://schemas.microsoft.com/ado/2007/08/dataservices");
            validator.AddNamespace("m", "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata");
            return(validator);
        }
Example #4
0
        // Not implemented yet because the OData parser library does not support isof
        //[TestMethod]
        //public void TestFnIsOf()
        //{
        //    var sparql = ProcessQuery("http://example.org/odata/Works?$filter=isof('DBPedia.Film')");
        //    Assert.IsNotNull(sparql);
        //    Console.WriteLine(sparql);
        //    Assert.AreEqual(1, sparql.RootGraphPattern.FilterExpressions.Count);
        //    Assert.AreEqual("EXISTS {?v1 a <http://dbpedia.org/ontology/Work>}", sparql.RootGraphPattern.FilterExpressions[0]);
        //}



        // Not implemented yet because the OData parser library does not support $select or $expand
        //[TestMethod]
        //public void TestSelectSimpleProperties()
        //{
        //    var sparql = ProcessQuery("http://example.org/odata/Films?$select=Name,Runtime,ReleaseDate");
        //    Assert.IsNotNull(sparql);
        //    Console.WriteLine(sparql.GetSparqlRepresentation());
        //    Assert.IsFalse(sparql.IsDescribe);
        //}

        private SparqlModel ProcessQuery(string odataQuery)
        {
            var generator       = new SparqlGenerator(_dbpediaMap);
            var queryDescriptor = QueryDescriptorQueryNode.ParseUri(
                new Uri(odataQuery),
                new Uri("http://example.org/odata/"), _dbpediaModel);

            generator.ProcessQuery(queryDescriptor);
            return(generator.SparqlQueryModel);
        }
 public void TestSkip()
 {
     var generator = new SparqlGenerator(_dbpediaMap);
     var queryDescriptor = QueryDescriptorQueryNode.ParseUri(
         new Uri("http://example.org/odata/Films?$skip=5"),
         new Uri("http://example.org/odata/"), _dbpediaModel);
     generator.ProcessQuery(queryDescriptor);
     var sparql = generator.SparqlQueryModel;
     Assert.IsNotNull(sparql);
     Assert.IsTrue(sparql.IsDescribe);
     Assert.AreEqual(5, sparql.Offset);
 }
 public void TestInstanceAccess()
 {
     var dbpediaGenerator = new SparqlGenerator(_dbpediaMap);
     var queryDescriptor = QueryDescriptorQueryNode.ParseUri(
                     new Uri("http://example.org/odata/Films('Un_Chien_Andalou')"),
                     new Uri("http://example.org/odata/"), _dbpediaModel);
     dbpediaGenerator.ProcessQuery(queryDescriptor);
     Assert.IsNotNull(dbpediaGenerator.SparqlQueryModel);
     Assert.IsNotNull(dbpediaGenerator.SparqlQueryModel.DescribeResource);
     Assert.AreEqual("http://dbpedia.org/resource/Un_Chien_Andalou", dbpediaGenerator.SparqlQueryModel.DescribeResource);
     Assert.AreEqual("DBPedia.Film", dbpediaGenerator.SparqlQueryModel.GetEntityType("http://dbpedia.org/resource/Un_Chien_Andalou"));
 }
Example #7
0
        public void TestInstanceAccess()
        {
            var dbpediaGenerator = new SparqlGenerator(_dbpediaMap);
            var queryDescriptor  = QueryDescriptorQueryNode.ParseUri(
                new Uri("http://example.org/odata/Films('Un_Chien_Andalou')"),
                new Uri("http://example.org/odata/"), _dbpediaModel);

            dbpediaGenerator.ProcessQuery(queryDescriptor);
            Assert.IsNotNull(dbpediaGenerator.SparqlQueryModel);
            Assert.IsNotNull(dbpediaGenerator.SparqlQueryModel.DescribeResource);
            Assert.AreEqual("http://dbpedia.org/resource/Un_Chien_Andalou", dbpediaGenerator.SparqlQueryModel.DescribeResource);
            Assert.AreEqual("DBPedia.Film", dbpediaGenerator.SparqlQueryModel.GetEntityType("http://dbpedia.org/resource/Un_Chien_Andalou"));
        }
Example #8
0
        public void TestSkip()
        {
            var generator       = new SparqlGenerator(_dbpediaMap);
            var queryDescriptor = QueryDescriptorQueryNode.ParseUri(
                new Uri("http://example.org/odata/Films?$skip=5"),
                new Uri("http://example.org/odata/"), _dbpediaModel);

            generator.ProcessQuery(queryDescriptor);
            var sparql = generator.SparqlQueryModel;

            Assert.IsNotNull(sparql);
            Assert.IsTrue(sparql.IsDescribe);
            Assert.AreEqual(5, sparql.Offset);
        }
Example #9
0
        public void TestSkipAndTop()
        {
            var generator       = new SparqlGenerator(_dbpediaMap);
            var queryDescriptor = QueryDescriptorQueryNode.ParseUri(
                new Uri("http://example.org/odata/Films?$skip=50&$top=10"),
                new Uri("http://example.org/odata/"),
                _dbpediaModel);

            generator.ProcessQuery(queryDescriptor);
            var sparql = generator.SparqlQueryModel;

            Assert.IsNotNull(sparql);
            Assert.IsTrue(sparql.IsDescribe);
            Assert.AreEqual(1, sparql.RootGraphPattern.TriplePatterns.Count);
            Assert.AreEqual(10, sparql.Limit);
            Assert.AreEqual(50, sparql.Offset);
        }
Example #10
0
        public void TestOrderByProperty()
        {
            var generator       = new SparqlGenerator(_dbpediaMap);
            var queryDescriptor = QueryDescriptorQueryNode.ParseUri(
                new Uri("http://example.org/odata/Places?$orderby=PopulationTotal&$top=20"),
                new Uri("http://example.org/odata/"), _dbpediaModel);

            generator.ProcessQuery(queryDescriptor);
            var sparql = generator.SparqlQueryModel;

            Assert.IsNotNull(sparql);
            Assert.IsTrue(sparql.IsDescribe);
            Assert.AreEqual(20, sparql.Limit);
            Assert.IsNotNull(sparql.Ordering);
            Assert.IsTrue(sparql.Ordering.IsSimple);
            Assert.AreEqual("v2", sparql.Ordering.Variable);
            Assert.IsNull(sparql.Ordering.ThenBy);
        }
 public void TestEntitySetAccess()
 {
     var dbpediaGenerator= new SparqlGenerator(_dbpediaMap);
     var queryDescriptor = QueryDescriptorQueryNode.ParseUri(
                     new Uri("http://example.org/odata/Films"),
                     new Uri("http://example.org/odata/"), _dbpediaModel); 
     dbpediaGenerator.ProcessQuery(queryDescriptor);
     Assert.IsNotNull(dbpediaGenerator.SparqlQueryModel);
     Assert.IsNotNull(dbpediaGenerator.SparqlQueryModel.RootGraphPattern);
     Assert.AreEqual(1, dbpediaGenerator.SparqlQueryModel.RootGraphPattern.TriplePatterns.Count);
     var tp = dbpediaGenerator.SparqlQueryModel.RootGraphPattern.TriplePatterns[0];
     Assert.AreEqual("?v1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://dbpedia.org/ontology/Film>",
         tp.GetSparqlRepresentation());
     Assert.IsNotNull(dbpediaGenerator.SparqlQueryModel.SelectVariables);
     Assert.AreEqual(1, dbpediaGenerator.SparqlQueryModel.SelectVariables.Count);
     Assert.IsTrue(dbpediaGenerator.SparqlQueryModel.SelectVariables.Contains("v1"));
     Assert.IsTrue(dbpediaGenerator.SparqlQueryModel.IsDescribe);
     Assert.AreEqual("DBPedia.Film", dbpediaGenerator.SparqlQueryModel.GetEntityType("v1"));
 }
Example #12
0
        public void TestEntitySetAccess()
        {
            var dbpediaGenerator = new SparqlGenerator(_dbpediaMap);
            var queryDescriptor  = QueryDescriptorQueryNode.ParseUri(
                new Uri("http://example.org/odata/Films"),
                new Uri("http://example.org/odata/"), _dbpediaModel);

            dbpediaGenerator.ProcessQuery(queryDescriptor);
            Assert.IsNotNull(dbpediaGenerator.SparqlQueryModel);
            Assert.IsNotNull(dbpediaGenerator.SparqlQueryModel.RootGraphPattern);
            Assert.AreEqual(1, dbpediaGenerator.SparqlQueryModel.RootGraphPattern.TriplePatterns.Count);
            var tp = dbpediaGenerator.SparqlQueryModel.RootGraphPattern.TriplePatterns[0];

            Assert.AreEqual("?v1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://dbpedia.org/ontology/Film>",
                            tp.GetSparqlRepresentation());
            Assert.IsNotNull(dbpediaGenerator.SparqlQueryModel.SelectVariables);
            Assert.AreEqual(1, dbpediaGenerator.SparqlQueryModel.SelectVariables.Count);
            Assert.IsTrue(dbpediaGenerator.SparqlQueryModel.SelectVariables.Contains("v1"));
            Assert.IsTrue(dbpediaGenerator.SparqlQueryModel.IsDescribe);
            Assert.AreEqual("DBPedia.Film", dbpediaGenerator.SparqlQueryModel.GetEntityType("v1"));
        }
 public void TestSkipAndTop()
 {
     var generator = new SparqlGenerator(_dbpediaMap);
     var queryDescriptor = QueryDescriptorQueryNode.ParseUri(
         new Uri("http://example.org/odata/Films?$skip=50&$top=10"),
         new Uri("http://example.org/odata/"),
         _dbpediaModel);
     generator.ProcessQuery(queryDescriptor);
     var sparql = generator.SparqlQueryModel;
     Assert.IsNotNull(sparql);
     Assert.IsTrue(sparql.IsDescribe);
     Assert.AreEqual(1, sparql.RootGraphPattern.TriplePatterns.Count);
     Assert.AreEqual(10, sparql.Limit);
     Assert.AreEqual(50, sparql.Offset);
 }
        // Not implemented yet because the OData parser library does not support isof
        //[TestMethod]
        //public void TestFnIsOf()
        //{
        //    var sparql = ProcessQuery("http://example.org/odata/Works?$filter=isof('DBPedia.Film')");
        //    Assert.IsNotNull(sparql);
        //    Console.WriteLine(sparql);
        //    Assert.AreEqual(1, sparql.RootGraphPattern.FilterExpressions.Count);
        //    Assert.AreEqual("EXISTS {?v1 a <http://dbpedia.org/ontology/Work>}", sparql.RootGraphPattern.FilterExpressions[0]);
        //}


        
        // Not implemented yet because the OData parser library does not support $select or $expand
        //[TestMethod]
        //public void TestSelectSimpleProperties()
        //{
        //    var sparql = ProcessQuery("http://example.org/odata/Films?$select=Name,Runtime,ReleaseDate");
        //    Assert.IsNotNull(sparql);
        //    Console.WriteLine(sparql.GetSparqlRepresentation());
        //    Assert.IsFalse(sparql.IsDescribe);
        //}

        private SparqlModel ProcessQuery(string odataQuery)
        {
            var generator = new SparqlGenerator(_dbpediaMap);
            var queryDescriptor = QueryDescriptorQueryNode.ParseUri(
                new Uri(odataQuery),
                new Uri("http://example.org/odata/"), _dbpediaModel);
            generator.ProcessQuery(queryDescriptor);
            return generator.SparqlQueryModel;
        }
 public void TestOrderByProperty()
 {
     var generator = new SparqlGenerator(_dbpediaMap);
     var queryDescriptor = QueryDescriptorQueryNode.ParseUri(
         new Uri("http://example.org/odata/Places?$orderby=PopulationTotal&$top=20"),
         new Uri("http://example.org/odata/"), _dbpediaModel);
     generator.ProcessQuery(queryDescriptor);
     var sparql = generator.SparqlQueryModel;
     Assert.IsNotNull(sparql);
     Assert.IsTrue(sparql.IsDescribe);
     Assert.AreEqual(20, sparql.Limit);
     Assert.IsNotNull(sparql.Ordering);
     Assert.IsTrue(sparql.Ordering.IsSimple);
     Assert.AreEqual("v2", sparql.Ordering.Variable);
     Assert.IsNull(sparql.Ordering.ThenBy);
 }
Example #16
0
 private XPathValidator GenerateAndExecuteSparql(string odataQuery, SparqlMap sparqlMap, ODataVersion odataVersion=ODataVersion.V3)
 {
     var parsedQuery = QueryDescriptorQueryNode.ParseUri(
         new Uri(odataQuery),
         new Uri(_odataBase),
         _dbpediaModel);
     var sparqlGenerator = new SparqlGenerator(sparqlMap, "en");
     sparqlGenerator.ProcessQuery(parsedQuery);
     var mockRequest = new Mock<IODataRequestMessage>();
     mockRequest.Setup(m => m.Url).Returns(new Uri(odataQuery));
     var mockMessage = new Mock<IODataResponseMessage>();
     var outputStream = new MemoryStream();
     mockMessage.Setup(m => m.GetStream()).Returns(outputStream);
     var feedGenerator = new ODataFeedGenerator(
         mockRequest.Object,
         mockMessage.Object, sparqlMap, _odataBase, 
         new ODataMessageWriterSettings{Indent = true, Version = odataVersion});
     Console.WriteLine(sparqlGenerator.SparqlQueryModel.GetSparqlRepresentation());
     sparqlGenerator.SparqlQueryModel.Execute(_sparqlEndpoint, feedGenerator);
     outputStream.Seek(0, SeekOrigin.Begin);
     var validator = new XPathValidator(outputStream);
     validator.AddNamespace("atom", "http://www.w3.org/2005/Atom");
     validator.AddNamespace("d", "http://schemas.microsoft.com/ado/2007/08/dataservices");
     validator.AddNamespace("m", "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata");
     return validator;
 }