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"); }
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"); }
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); }
// 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")); }
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); }
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")); }
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")); }
// 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; }
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; }