Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sparql 在fluent filter中使用STRSTARTS_Sparql_Semantic Web_Dotnetrdf - Fatal编程技术网

Sparql 在fluent filter中使用STRSTARTS

Sparql 在fluent filter中使用STRSTARTS,sparql,semantic-web,dotnetrdf,Sparql,Semantic Web,Dotnetrdf,我很难理解如何使用fluent query在dotnetrdf中表示以下查询。 SPARQL查询: PREFIX a: <http://www.example.com/ex1#> PREFIX rdf: < http://www.w3.org/1999/02/22-rdf-syntax-ns#> SELECT ?object WHERE { a:Branch1 rdf:type ?object FILTER(!STRSTARTS(STR(?object), "h

我很难理解如何使用fluent query在dotnetrdf中表示以下查询。 SPARQL查询:

PREFIX a: <http://www.example.com/ex1#>
PREFIX rdf: < http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?object
WHERE {
a:Branch1 rdf:type ?object
FILTER(!STRSTARTS(STR(?object), "http://www.w3.org/2002/07/owl#"))
}

谢谢,

不幸的是,
STRSTARTS
函数还没有映射到fluent界面,但是有一种方法可以解决这个问题。您可以在Filter操作中构建一个常规的
ISparqlExpression
,并将其包装到一个新的
布尔表达式中:

var queryBuilder=
查询生成器
.Select(新字符串[]{objVar})
.在哪里(
(triplePatternBuilder)=>
{
三元组生成器
.主题(要素)
.PredicateUri(“rdf:类型”)
.对象(objVar);
})
.Filter(f=>
新布尔表达式(
新StrStartsFunction(
新StrFunction(新变量项(objVar)),
f、 常数(“http://www.w3.org/2002/07/owl#1.表达方式
))
);

注意:您可能需要将
VDS.RDF.Query.Builder.Expressions
VDS.RDF.Nodes
添加到您的导入中,以便对上述内容进行编译。

起作用。我只需要对函数求反。所以,我做了
!新布尔表达式
var prefixes = new NamespaceMapper(true);
prefixes.AddNamespace("rdf", new Uri("http://www.w3.org/1999/02/22-rdf-syntax-ns#"));
prefixes.AddNamespace("a", new Uri("http://www.example.com/ex1#"));

var objVar = "object";
var queryBuilder =
    QueryBuilder
    .Select(new string[] { objVar })
    .Where(
        (triplePatternBuilder) =>
        {
            triplePatternBuilder
                .Subject(element)
                .PredicateUri("rdf:type")
                .Object(objVar);
        })
    .Filter(f => 
                // What should be added here?
            );

queryBuilder.Prefixes = prefixes;