Gigalodon
Gigalodon

Reputation: 51

How to use FILTER IN in dotnetrdf

I want to use the "FILTER IN" Filter in dotnetRdf, but I don`t get it running.

My Query is below, but I do not have an idea what to enter in the the "In" Method. I want to have there a list of URIs.

var queryBuilder =
                QueryBuilder
                .Select("name")
                .Where(
                    (triplePatternBuilder) =>
                    {
                        triplePatternBuilder
                            .Subject("person")
                            .Predicate("exp:called")
                            .Object("name");
                    })
                .Filter(builder => builder.Variable(name).In());

EDIT

IriExpression does not work

IriExpression does not work

Upvotes: 1

Views: 227

Answers (1)

Kal
Kal

Reputation: 1932

The In() method just takes one or more SparqlExpression arguments. So you can use an IriExpression for a list of IRI constants:

using System;
using VDS.RDF.Query.Builder.Expressions;

namespace VDS.RDF.Query.Builder
{
    public class FilterInTests
    {
        public void TestFilterInUris()
        {
            var b = QueryBuilder
                .Select("name")
                .Where(
                    t =>
                        t.Subject("person")
                            .PredicateUri("exp:called")
                            .Object("name"))
                .Filter(fb => fb.Variable("name").In(
                    new IriExpression(new ConstantTerm(new UriNode(null, new Uri("http://example.com/p1")))),
                    new IriExpression(new ConstantTerm(new UriNode(null, new Uri("http://example.com/p2"))))));
        }
    }
}

Upvotes: 2

Related Questions