Beispiel #1
0
        public void TestSetLimit()
        {
            SparqlQuery query = new SparqlQuery(@"
                SELECT ?s0 ?p0 ?o0 WHERE
                {
                    ?s0 ?p0 ?o0 .
                    {
                        SELECT DISTINCT ?s0 WHERE
                        {
                            ?s ?p ?o.
                            ?s @type @class .

                            {
                                ?s ?p1 ?o1 .
                                FILTER ISLITERAL(?o1) . FILTER REGEX(STR(?o1), '', 'i') .
                            }
                            UNION
                            {
                                ?s ?p1 ?s1 .
                                ?s1 ?p2 ?o2 .
                                FILTER ISLITERAL(?o2) . FILTER REGEX(STR(?o2), '', 'i') .
                            }
                       }
                       ORDER BY ?o
                    }
                }");

            query.Bind("@type", rdf.type);
            query.Bind("@class", tmo.Task);

            MethodInfo method = query.GetType().GetMethod("SetLimit", BindingFlags.NonPublic | BindingFlags.Instance);

            method.Invoke(query, new object[] { 10 });

            ISparqlQueryResult result = Model.ExecuteQuery(query);

            List <Resource> resources = result.GetResources().ToList();
        }
Beispiel #2
0
        public void TestComplexQuery()
        {
            string queryString = "SELECT ?s0 ?p0 ?o0 " +
                                 "WHERE " +
                                 "{{ " +
                                 "?s0 ?p0 ?o0 . " +
                                 "{{ " +
                                 "  SELECT DISTINCT ?s0 " +
                                 "WHERE " +
                                 "{{ " +
                                 " ?s ?p ?o." +
                                 "?s <{0}> <{1}> ." +
                                 "{{" +
                                 "  ?s ?p1 ?o1 ." +
                                 "FILTER ISLITERAL(?o1) . FILTER REGEX(STR(?o1), \"\", \"i\") ." +
                                 "}}" +
                                 "UNION" +
                                 "{{" +
                                 "?s ?p1 ?s1 ." +
                                 "?s1 ?p2 ?o2 ." +
                                 "FILTER ISLITERAL(?o2) . FILTER REGEX(STR(?o2), \"\", \"i\") ." +
                                 "}}" +
                                 "}}" +
                                 "ORDER BY ?o" +
                                 "}}" +
                                 "}}";

            string      q     = string.Format(queryString, rdf.type.Uri.OriginalString, tmo.Task.Uri.OriginalString);
            SparqlQuery query = new SparqlQuery(q);

            MethodInfo method = query.GetType().GetMethod("SetLimit", BindingFlags.NonPublic | BindingFlags.Instance);

            method.Invoke(query, new object[] { 10 });

            var x   = Model.ExecuteQuery(query);
            var res = x.GetResources().ToList();
        }
Beispiel #3
0
        public void TestIsOrdered()
        {
            Assert.Inconclusive("Reevaluate with more recent version of virtuoso client library.");

            MethodInfo isOrdered;

            SparqlQuery query = new SparqlQuery(@"
                SELECT ?s0 ?p0 ?o0 WHERE
                {
                    ?s0 ?p0 ?o0 .
                    {
                        SELECT DISTINCT ?s0 WHERE
                        {
                            ?s ?p ?o.
                            ?s @type @class .

                            {
                                ?s ?p1 ?o1 .
                                FILTER ISLITERAL(?o1) . FILTER REGEX(STR(?o1), '', 'i') .
                            }
                            UNION
                            {
                                ?s ?p1 ?s1 .
                                ?s1 ?p2 ?o2 .
                                FILTER ISLITERAL(?o2) . FILTER REGEX(STR(?o2), '', 'i') .
                            }
                       }
                       ORDER BY ?o
                    }
                }");

            query.Bind("@type", rdf.type);
            query.Bind("@class", tmo.Task);

            isOrdered = query.GetType().GetMethod("IsOrdered", BindingFlags.NonPublic | BindingFlags.Instance);
            Assert.AreEqual(true, isOrdered.Invoke(query, null));

            query = new SparqlQuery(@"
                SELECT ?s0 ?p0 ?o0 WHERE
                {
                    ?s0 ?p0 ?o0 .
                    {
                        SELECT DISTINCT ?s0 WHERE
                        {
                            ?s ?p ?o.
                            ?s @type @class .

                            {
                                ?s ?p1 ?o1 .
                                FILTER ISLITERAL(?o1) . FILTER REGEX(STR(?o1), '', 'i') .
                            }
                            UNION
                            {
                                ?s ?p1 ?s1 .
                                ?s1 ?p2 ?o2 .
                                FILTER ISLITERAL(?o2) . FILTER REGEX(STR(?o2), '', 'i') .
                            }
                       }
                    }
                }");

            query.Bind("@type", rdf.type);
            query.Bind("@class", tmo.Task);

            isOrdered = query.GetType().GetMethod("IsOrdered", BindingFlags.NonPublic | BindingFlags.Instance);
            Assert.AreEqual(false, isOrdered.Invoke(query, null));

            query = new SparqlQuery(@"
                SELECT DISTINCT ?s0
                FROM <http://semiodesk.com/id/8083cf10-5f90-40d4-b30a-c18fea31177b/>
                WHERE
                {
                  ?s0 ?p0 ?o0 . 
                  ?s0 a nfo:Visual . 
                  ?s0 nexif:dateTime ?o1 . 
                }
                ORDER BY ASC(?o1) LIMIT 50");

            isOrdered = query.GetType().GetMethod("IsOrdered", BindingFlags.NonPublic | BindingFlags.Instance);
            Assert.AreEqual(true, isOrdered.Invoke(query, null));
        }