Beispiel #1
0
        public void TestLangSpecParsing(String file)
        {
            this.EnsureTestData(file);

            MimeTypeDefinition def = MimeTypesHelper.GetDefinitions(MimeTypesHelper.GetMimeTypes(Path.GetExtension(file))).FirstOrDefault();

            if (def != null)
            {
                if (def.CanParseRdf)
                {
                    Graph g = new Graph();
                    g.LoadFromFile(file);

                    Assert.AreEqual(this._original, g);
                }
                else if (def.CanParseRdfDatasets)
                {
                    TripleStore store = new TripleStore();
                    store.LoadFromFile(file);

                    Assert.AreEqual(this._original, store.Graphs.First());
                }
            }
            else
            {
                Assert.Fail("Unsupported file type");
            }
        }
Beispiel #2
0
        /// <summary>
        /// Loads data from ontology file and initialize some intances for querying
        /// </summary>
        public static void Start()
        {
            store = new TripleStore();
            store.LoadFromFile("PhoneOntology.owl");

            InMemoryDataset ds = new InMemoryDataset(store);

            processor    = new LeviathanQueryProcessor(ds);
            sparqlparser = new SparqlQueryParser();
        }
Beispiel #3
0
        public void ParsingFileLoaderGraphIntoTripleStore()
        {
            Graph g = new Graph();

            g.LoadFromEmbeddedResource("VDS.RDF.Configuration.configuration.ttl");
            g.SaveToFile("fileloader-graph-to-store.ttl");

            TripleStore store = new TripleStore();

            store.LoadFromFile("fileloader-graph-to-store.ttl");

            Assert.True(store.Triples.Count() > 0);
            Assert.Equal(1, store.Graphs.Count);
        }
        public void SparqlAggregatesMaxBug1()
        {
            TripleStore store = new TripleStore();

            store.LoadFromFile(@"resources\LearningStyles.rdf");


            IGraph graph = ExecuteGraphQuery(store, @"prefix sage:
<http://www.semanticsage.home.lc/LearningStyles.owl#>
prefix xsd: <http://www.w3.org/2001/XMLSchema#>
prefix : <http://semanticsage.home.lc/files/LearningStyles.rdf#>

CONSTRUCT
{
    ?MTech :max ?maxScore
}
WHERE
{
    SELECT ?MTech max(?max) as ?maxScore
    WHERE
    {
        SELECT ?MTech ?LessonType sum(?hasValue) as ?max
        WHERE
        {
            ?MTech sage:attendsLessons ?Lesson.
            ?Lesson sage:hasLessonType ?LessonType.
            ?MTech sage:undergoesEvaluation ?Quiz.
            ?Quiz sage:isForLesson ?Lesson.
            ?MTech sage:hasQuizMarks ?QuizMarks.
            ?QuizMarks sage:belongsToQuiz ?Quiz.
            ?QuizMarks sage:hasValue ?hasValue.
            ?Lesson sage:inRound '1'^^xsd:int.
        }
        GROUP BY ?MTech ?LessonType
    }
    GROUP BY ?MTech
}");

            Assert.NotNull(graph);

            INode zero = (0).ToLiteral(graph);

            foreach (Triple t in graph.Triples)
            {
                Assert.False(t.Object.CompareTo(zero) == 0, "Unexpected zero value returned");
            }
        }
Beispiel #5
0
        public void SparqlUpdateLoadQuads5()
        {
            var tripleStore = new TripleStore();

            tripleStore.LoadFromFile(@"resources\core-421\test.nq");
            Assert.Equal(3, tripleStore.Triples.Count());
            Assert.Equal(2, tripleStore.Graphs.Count);

            tripleStore.SaveToFile("core-421.nq", new NQuadsWriter());

            var newStore = new TripleStore();

            newStore.LoadFromFile("core-421.nq", new NQuadsParser());

            Assert.Equal(3, newStore.Triples.Count());
            Assert.Equal(2, newStore.Graphs.Count);
        }
Beispiel #6
0
        public void SparqlUpdateLoadQuads5()
        {
            var tripleStore = new TripleStore();

            tripleStore.LoadFromFile(@"resources\core-421\test.nq");
            Assert.That(tripleStore.Triples.ToList(), Has.Count.EqualTo(3));
            Assert.That(tripleStore.Graphs, Has.Count.EqualTo(2));

            tripleStore.SaveToFile("core-421.nq", new NQuadsWriter());

            var newStore = new TripleStore();

            newStore.LoadFromFile("core-421.nq", new NQuadsParser());

            Assert.That(newStore.Triples.ToList(), Has.Count.EqualTo(3));
            Assert.That(newStore.Graphs, Has.Count.EqualTo(2));
        }
Beispiel #7
0
        public void SparqlUpdateLoadQuads3()
        {
            var tripleStore             = new TripleStore();
            SparqlUpdateCommandSet cmds = this._parser.ParseFromFile(@"resources\core-421\test3.ru");

            tripleStore.ExecuteUpdate(cmds);
            Assert.Equal(3, tripleStore.Triples.Count());
            Assert.Equal(3, tripleStore.Graphs.Count);

            tripleStore.SaveToFile("core-421.nq", new NQuadsWriter());

            var newStore = new TripleStore();

            newStore.LoadFromFile("core-421.nq", new NQuadsParser());

            Assert.Equal(3, newStore.Triples.Count());
            Assert.Equal(2, newStore.Graphs.Count);
        }
Beispiel #8
0
        public void SparqlUpdateLoadQuads2()
        {
            var tripleStore             = new TripleStore();
            SparqlUpdateCommandSet cmds = this._parser.ParseFromFile(@"resources\core-421\test2.ru");

            tripleStore.ExecuteUpdate(cmds);
            Assert.That(tripleStore.Triples.ToList(), Has.Count.EqualTo(3));
            Assert.That(tripleStore.Graphs, Has.Count.EqualTo(3));

            tripleStore.SaveToFile("core-421.nq", new NQuadsWriter());

            var newStore = new TripleStore();

            newStore.LoadFromFile("core-421.nq", new NQuadsParser());

            Assert.That(newStore.Triples.ToList(), Has.Count.EqualTo(3));
            Assert.That(newStore.Graphs, Has.Count.EqualTo(2));
        }
Beispiel #9
0
        public void SparqlEvaluationMultipleOptionals2()
        {
            TripleStore store = new TripleStore();

            store.LoadFromFile("resources\\multiple-options.trig");

            SparqlQueryParser parser = new SparqlQueryParser();
            SparqlQuery       query  = parser.ParseFromFile("resources\\multiple-optionals-alternate.rq");

            LeviathanQueryProcessor processor = new LeviathanQueryProcessor(store);
            Object results = processor.ProcessQuery(query);

            if (results is SparqlResultSet)
            {
                TestTools.ShowResults(results);
            }
            else
            {
                Assert.Fail("Expected a SPARQL Result Set");
            }
        }
Beispiel #10
0
        public void SparqlUpdateLoadQuads4()
        {
            var tripleStore = new TripleStore();

            String g1 = Path.GetFullPath(@"resources\core-421\g1.nq").Replace('\\', '/');
            String g2 = Path.GetFullPath(@"resources\core-421\g2.nq").Replace('\\', '/');

            tripleStore.ExecuteUpdate("LOAD <file:///" + g1 + "> into graph <http://test.org/user>");
            tripleStore.ExecuteUpdate("LOAD <file:///" + g2 + "> into graph <http://test.org/prodList/>");
            Assert.Equal(3, tripleStore.Triples.Count());
            Assert.Equal(3, tripleStore.Graphs.Count);

            tripleStore.SaveToFile("core-421.nq", new NQuadsWriter());

            var newStore = new TripleStore();

            newStore.LoadFromFile("core-421.nq", new NQuadsParser());

            Assert.Equal(3, newStore.Triples.Count());
            Assert.Equal(2, newStore.Graphs.Count);
        }
Beispiel #11
0
    static void Main()
    {
        ITripleStore store = new TripleStore();

        store.LoadFromFile("input.trig");
        var factory = new EntityContextFactory();

        // it is also possible to add fluent/attribute mappings separately
        factory.WithMappings(mb => mb.FromAssemblyOf <IPerson>());

        // this is necessary to tell where entities' data is stored in named graphs
        // see the input.trig file to find out how it does that
        factory.WithMetaGraphUri(new Uri("http://romanticweb.net/samples"));

        // this API bound to change in the future so that custom
        // namespaces can be added easily
        factory.WithOntology(new DefaultOntologiesProvider(BuiltInOntologies.DCTerms |
                                                           BuiltInOntologies.FOAF));

        factory.WithDotNetRDF(store);

        var context = factory.CreateContext();

        foreach (var person in context.AsQueryable <IPerson>().Where(p => p.Name != "Karol"))
        {
            var pubId = "http://romanticweb.net/samples/publication/" + Guid.NewGuid();
            var pub   = context.Create <IPublication>(pubId);
            pub.Title = string.Format("Publication about RDF by {0} {1}",
                                      person.Name, person.LastName);
            pub.DatePublished = DateTime.Now;

            person.Publications.Add(pub);
        }

        context.Commit();

        store.SaveToFile("output.trig", new TriGWriter());
    }
        public PartialViewResult ExecuteQuery(Query data)
        {
            ResultSet _ResultSet = new ResultSet();

            SparqlResultSet _SparqlResultSet = null;
            //string query = Request.Unvalidated["SparqlQuery"];
            // Create a Triple Collection with only a subject index
            BaseTripleCollection tripleCollection = new TreeIndexedTripleCollection(
                true, false, false, false, false, false, MultiDictionaryMode.AVL);
            // Create a Graph using the customized triple collection
            //  Graph g = new Graph(tripleCollection);
            TripleStore _TripleStore = new TripleStore();
            string      _OwlFileName = GetAttachedOwlFile();

            if (!_OwlFileName.Equals("Error"))
            {
                string _OWLFilePath = Server.MapPath("~/DataSets/" + _OwlFileName);
                _TripleStore.LoadFromFile(_OWLFilePath);
                ISparqlDataset          _ISparqlDataset          = new InMemoryDataset(_TripleStore);
                LeviathanQueryProcessor _LeviathanQueryProcessor = new LeviathanQueryProcessor(_ISparqlDataset);
                SparqlQueryParser       _SparqlQueryParser       = new SparqlQueryParser();
                //  Then we can parse a SPARQL string into a query
                if (ModelState.IsValid)
                {
                    try {
                        SparqlQuery _SparqlQuery = _SparqlQueryParser.ParseFromString(data.query);
                        var         results      = _LeviathanQueryProcessor.ProcessQuery(_SparqlQuery);
                        _SparqlResultSet = (SparqlResultSet)results;

                        ///
                        _ResultSet.Columns = _SparqlResultSet.Variables;
                        string value = null;
                        foreach (SparqlResult _SparqlResult in _SparqlResultSet)
                        {
                            foreach (var _Col in _ResultSet.Columns)
                            {
                                INode _Node;
                                if (_SparqlResult.TryGetValue(_Col, out _Node))
                                {
                                    switch (_Node.NodeType)
                                    {
                                    case NodeType.Uri:
                                        value = ((IUriNode)_Node).Uri.AbsoluteUri;
                                        break;

                                    case NodeType.Literal:

                                        value = ((ILiteralNode)_Node).Value;
                                        break;

                                    default:
                                        Console.WriteLine("Error Node");
                                        ModelState.AddModelError("", "Error in The Node Type ");
                                        break;
                                    }
                                }
                                else
                                {
                                    value = String.Empty;
                                }
                                //Data To Rows
                                _ResultSet.Rows.Enqueue(value);
                            }
                        }

                        ///
                    }
                    catch (RdfParseException e)
                    {
                        //  Console.SetError(e.ToString());
                        ModelState.AddModelError("", "Error in The Syntax " + e.Message);
                        TempData["message"] = string.Format("Syntaxerror");
                    }
                }
                else
                {
                    TempData["message"] = string.Format("EmptyQuery");
                }
            }
            else
            {
                TempData["message"] = string.Format("ChooseDb");
            }
            return(PartialView("_ExecuteQuery", _ResultSet));
        }
        public void SparqlEvaluationMultipleOptionals2()
        {
            TripleStore store = new TripleStore();
            store.LoadFromFile("multiple-options.trig");

            SparqlQueryParser parser = new SparqlQueryParser();
            SparqlQuery query = parser.ParseFromFile("multiple-optionals-alternate.rq");

            Object results = query.Evaluate(store);
            if (results is SparqlResultSet)
            {
                TestTools.ShowResults(results);
            }
            else
            {
                Assert.Fail("Expected a SPARQL Result Set");
            }
        }
Beispiel #14
0
        public Uri Read(Uri graphUri, Uri url, RdfSerializationFormat format, bool update)
        {
            IGraph graph = null;

            if (url.AbsoluteUri.StartsWith("file:"))
            {
                string path;

                if (url.IsAbsoluteUri)
                {
                    path = url.LocalPath;
                }
                else
                {
                    path = Path.Combine(Directory.GetCurrentDirectory(), url.OriginalString.Substring(5));
                }

                if (graphUri != null)
                {
                    if (format == RdfSerializationFormat.Trig)
                    {
                        TripleStore s = new TripleStore();
                        s.LoadFromFile(path, new TriGParser());

                        foreach (VDS.RDF.Graph g in s.Graphs)
                        {
                            if (!update)
                            {
                                _store.Remove(g.BaseUri);
                            }
                            _store.Add(g, update);
                        }
                    }
                    else
                    {
                        graph = new Graph();
                        graph.LoadFromFile(path, GetReader(format));
                        graph.BaseUri = graphUri;
                    }
                }
            }
            else if (url.Scheme == "http")
            {
                graph = new Graph();
                UriLoader.Load(graph, url);
                graph.BaseUri = graphUri;
            }

            if (graph != null)
            {
                if (!update)
                {
                    _store.Remove(graph.BaseUri);
                }
                _store.Add(graph, update);

                return(graphUri);
            }

            return(null);
        }