コード例 #1
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);
        }
コード例 #2
0
 public void TestReadPropertyUriAnnotation()
 {
     var map = new SparqlMap("dbpedia.metadata", 
         "http://dbpedia.org/ontology/", NameMapping.Unchanged,
         "http://dbpedia.org/property/name", NameMapping.LowerCamelCase);
     Assert.AreEqual("http://dbpedia.org/property/name", map.GetUriForProperty("DBPedia.Film", "Name"));
 }
コード例 #3
0
        public void TestReadPropertyUriAnnotation()
        {
            var map = new SparqlMap("dbpedia.metadata",
                                    "http://dbpedia.org/ontology/", NameMapping.Unchanged,
                                    "http://dbpedia.org/property/name", NameMapping.LowerCamelCase);

            Assert.AreEqual("http://dbpedia.org/property/name", map.GetUriForProperty("DBPedia.Film", "Name"));
        }
コード例 #4
0
 public SparqlGeneratorTests()
 {
     using (var edmxStream = System.IO.File.OpenRead("dbpedia.metadata"))
     {
         IEnumerable <EdmError> errors;
         Microsoft.Data.Edm.Csdl.EdmxReader.TryParse(new XmlTextReader(edmxStream), out _dbpediaModel,
                                                     out errors);
     }
     _dbpediaMap = new SparqlMap("dbpedia.metadata", "http://dbpedia.org/", NameMapping.Unchanged);
 }
コード例 #5
0
 public SparqlGeneratorTests()
 {
     using (var edmxStream = System.IO.File.OpenRead("dbpedia.metadata"))
     {
         IEnumerable<EdmError> errors;
         Microsoft.Data.Edm.Csdl.EdmxReader.TryParse(new XmlTextReader(edmxStream), out _dbpediaModel,
                                                     out errors);
     }
     _dbpediaMap = new SparqlMap("dbpedia.metadata", "http://dbpedia.org/", NameMapping.Unchanged);
 }
コード例 #6
0
 public void TestMapDefaults()
 {
     var map = new SparqlMap("dbpedia.metadata",
                             "http://dbpedia.org/ontology/", NameMapping.UpperCamelCase,
                             "http://dbpedia.org/property/", NameMapping.LowerCamelCase);
     Assert.AreEqual("http://www.w3.org/2002/07/owl#Thing", map.GetUriForType("DBPedia.Thing"));
     Assert.AreEqual("http://dbpedia.org/ontology/Work", map.GetUriForType("DBPedia.Work"));
     Assert.AreEqual("http://dbpedia.org/ontology/Film", map.GetUriForType("DBPedia.Film"));
     Assert.AreEqual("http://dbpedia.org/ontology/Place", map.GetUriForType("DBPedia.Place"));
     Assert.AreEqual("http://dbpedia.org/property/elevation", map.GetUriForProperty("DBPedia.Place", "Elevation"));
     Assert.AreEqual("http://dbpedia.org/property/annualTemperature", map.GetUriForProperty("DBPedia.Place", "AnnualTemperature"));
 }
コード例 #7
0
 public ODataGeneratorTests()
 {
     using (var edmxStream = File.OpenRead("dbpedia.metadata"))
     {
         IEnumerable<EdmError> errors;
         Microsoft.Data.Edm.Csdl.EdmxReader.TryParse(new XmlTextReader(edmxStream), out _dbpediaModel,
                                                     out errors);
     }
     _dbpediaMap = new SparqlMap("dbpedia.metadata",
         "http://dbpedia.org/ontology/", NameMapping.UpperCamelCase,
         "http://dbpedia.org/property/", NameMapping.LowerCamelCase);
 }
コード例 #8
0
 public ODataGeneratorTests()
 {
     using (var edmxStream = File.OpenRead("dbpedia.metadata"))
     {
         IEnumerable <EdmError> errors;
         Microsoft.Data.Edm.Csdl.EdmxReader.TryParse(new XmlTextReader(edmxStream), out _dbpediaModel,
                                                     out errors);
     }
     _dbpediaMap = new SparqlMap("dbpedia.metadata",
                                 "http://dbpedia.org/ontology/", NameMapping.UpperCamelCase,
                                 "http://dbpedia.org/property/", NameMapping.LowerCamelCase);
 }
コード例 #9
0
        public void TestMapDefaults()
        {
            var map = new SparqlMap("dbpedia.metadata",
                                    "http://dbpedia.org/ontology/", NameMapping.UpperCamelCase,
                                    "http://dbpedia.org/property/", NameMapping.LowerCamelCase);

            Assert.AreEqual("http://www.w3.org/2002/07/owl#Thing", map.GetUriForType("DBPedia.Thing"));
            Assert.AreEqual("http://dbpedia.org/ontology/Work", map.GetUriForType("DBPedia.Work"));
            Assert.AreEqual("http://dbpedia.org/ontology/Film", map.GetUriForType("DBPedia.Film"));
            Assert.AreEqual("http://dbpedia.org/ontology/Place", map.GetUriForType("DBPedia.Place"));
            Assert.AreEqual("http://dbpedia.org/property/elevation", map.GetUriForProperty("DBPedia.Place", "Elevation"));
            Assert.AreEqual("http://dbpedia.org/property/annualTemperature", map.GetUriForProperty("DBPedia.Place", "AnnualTemperature"));
        }
コード例 #10
0
 public void TestReadNavigationPropertyAnnotation()
 {
     var map = new SparqlMap("dbpedia.metadata", 
         "http://dbpedia.org/ontology/", NameMapping.Unchanged,
         "http://dbpedia.org/property/", NameMapping.LowerCamelCase);
     string propertyUri;
     bool isInverse;
     Assert.IsTrue(map.TryGetUriForNavigationProperty("DBPedia.Work", "Director", out propertyUri, out isInverse));
     Assert.IsFalse(isInverse);
     Assert.AreEqual("http://dbpedia.org/property/director", propertyUri);
     Assert.IsTrue(map.TryGetUriForNavigationProperty("DBPedia.Film", "Director", out propertyUri, out isInverse));
     Assert.IsFalse(isInverse);
     Assert.AreEqual("http://dbpedia.org/property/director", propertyUri);
 }
コード例 #11
0
        public void TestReadNavigationPropertyAnnotation()
        {
            var map = new SparqlMap("dbpedia.metadata",
                                    "http://dbpedia.org/ontology/", NameMapping.Unchanged,
                                    "http://dbpedia.org/property/", NameMapping.LowerCamelCase);
            string propertyUri;
            bool   isInverse;

            Assert.IsTrue(map.TryGetUriForNavigationProperty("DBPedia.Work", "Director", out propertyUri, out isInverse));
            Assert.IsFalse(isInverse);
            Assert.AreEqual("http://dbpedia.org/property/director", propertyUri);
            Assert.IsTrue(map.TryGetUriForNavigationProperty("DBPedia.Film", "Director", out propertyUri, out isInverse));
            Assert.IsFalse(isInverse);
            Assert.AreEqual("http://dbpedia.org/property/director", propertyUri);
        }
コード例 #12
0
 public EndToEndTests()
 {
     using (var edmxStream = File.OpenRead("dbpedia.metadata"))
     {
         IEnumerable<EdmError> errors;
         Microsoft.Data.Edm.Csdl.EdmxReader.TryParse(new XmlTextReader(edmxStream), out _dbpediaModel,
                                                     out errors);
     }
     _dbpediaMap = new SparqlMap("dbpedia.metadata", 
         "http://dbpedia.org/ontology/", NameMapping.Unchanged,
         "http://dbpedia.org/property/", NameMapping.LowerCamelCase);
     _sparqlEndpoint = new SparqlRemoteEndpoint(new Uri("http://dbpedia.org/sparql"),
                                                "http://dbpedia.org")
         {
             Timeout = 60000,
             RdfAcceptHeader = "application/rdf+xml"
         };
     _odataBase = "http://example.org/odata/";
 }
コード例 #13
0
 public EndToEndTests()
 {
     using (var edmxStream = File.OpenRead("dbpedia.metadata"))
     {
         IEnumerable <EdmError> errors;
         Microsoft.Data.Edm.Csdl.EdmxReader.TryParse(new XmlTextReader(edmxStream), out _dbpediaModel,
                                                     out errors);
     }
     _dbpediaMap = new SparqlMap("dbpedia.metadata",
                                 "http://dbpedia.org/ontology/", NameMapping.Unchanged,
                                 "http://dbpedia.org/property/", NameMapping.LowerCamelCase);
     _sparqlEndpoint = new SparqlRemoteEndpoint(new Uri("http://dbpedia.org/sparql"),
                                                "http://dbpedia.org")
     {
         Timeout         = 60000,
         RdfAcceptHeader = "application/rdf+xml"
     };
     _odataBase = "http://example.org/odata/";
 }
コード例 #14
0
        public void TestIdPropertyMapping()
        {
            var map = new SparqlMap("dbpedia.metadata",
                                    "http://dbpedia.org/ontology/", NameMapping.UpperCamelCase,
                                    "http://dbpedia.org/property/", NameMapping.LowerCase);

            Assert.IsNull(map.GetUriForProperty("DBPedia.Thing", "Id"));
            Assert.IsNull(map.GetUriForProperty("DBPedia.Film", "Id"));
            Assert.IsFalse(map.GetStructuralPropertyMappings("DBPedia.Thing").Any(m => m.Name.Equals("Id")));
            Assert.IsFalse(map.GetStructuralPropertyMappings("DBPedia.Film").Any(m => m.Name.Equals("Id")));

            var idMapping = map.GetIdentifierPropertyMapping("DBPedia.Thing");

            Assert.IsNotNull(idMapping);
            Assert.AreEqual("http://dbpedia.org/resource/", idMapping.IdentifierPrefix);
            Assert.AreEqual("Id", idMapping.Name);

            idMapping = map.GetIdentifierPropertyMapping("DBPedia.Film");
            Assert.IsNotNull(idMapping);
            Assert.AreEqual("http://dbpedia.org/resource/", idMapping.IdentifierPrefix);
            Assert.AreEqual("Id", idMapping.Name);
        }
コード例 #15
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;
 }
コード例 #16
0
        public void TestIdPropertyMapping()
        {
            var map = new SparqlMap("dbpedia.metadata",
                                    "http://dbpedia.org/ontology/", NameMapping.UpperCamelCase,
                                    "http://dbpedia.org/property/", NameMapping.LowerCase);
            Assert.IsNull(map.GetUriForProperty("DBPedia.Thing", "Id"));
            Assert.IsNull(map.GetUriForProperty("DBPedia.Film", "Id"));
            Assert.IsFalse(map.GetStructuralPropertyMappings("DBPedia.Thing").Any(m => m.Name.Equals("Id")));
            Assert.IsFalse(map.GetStructuralPropertyMappings("DBPedia.Film").Any(m=>m.Name.Equals("Id")));

            var idMapping = map.GetIdentifierPropertyMapping("DBPedia.Thing");
            Assert.IsNotNull(idMapping);
            Assert.AreEqual("http://dbpedia.org/resource/", idMapping.IdentifierPrefix);
            Assert.AreEqual("Id", idMapping.Name);

            idMapping = map.GetIdentifierPropertyMapping("DBPedia.Film");
            Assert.IsNotNull(idMapping);
            Assert.AreEqual("http://dbpedia.org/resource/", idMapping.IdentifierPrefix);
            Assert.AreEqual("Id", idMapping.Name);
        }
コード例 #17
0
 public void TestReadTypeUriAnnotation()
 {
     var map = new SparqlMap("dbpedia.metadata", "http://dbpedia.org/", NameMapping.Unchanged);
     Assert.AreEqual("http://dbpedia.org/ontology/Film", map.GetUriForType("DBPedia.Film"));
 }
コード例 #18
0
        public void TestReadTypeUriAnnotation()
        {
            var map = new SparqlMap("dbpedia.metadata", "http://dbpedia.org/", NameMapping.Unchanged);

            Assert.AreEqual("http://dbpedia.org/ontology/Film", map.GetUriForType("DBPedia.Film"));
        }