Reputation: 51
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
Upvotes: 1
Views: 227
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