0

鉴于此 RDF:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rdf:RDF [<!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
<!ENTITY rdfs 'http://www.w3.org/2000/01/rdf-schema#'>
<!ENTITY xsd 'http://www.w3.org/2001/XMLSchema#'>]>
<rdf:RDF xmlns:xsd="http://www.w3.org/2001/XMLSchema#" 
         xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
         xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns:dnr="http://www.dotnetrdf.org/configuration#"
         xml:base="http://www.example.org/"
         xmlns:ns1="http://www.example.org/startTime"
     xmlns:ns2="http://www.example.org/endTime">

  <rdf:Description rdf:about="Fadi">
    <ns0:eat xmlns:ns0="http://example.org/">Apple</ns0:eat>
    <ns1:startTime>00:01:38</ns1:startTime>
    <ns2:endTime>00:01:39</ns2:endTime>
  </rdf:Description>
</rdf:RDF>

我正在尝试进行 sparql 查询,但是当我进行此查询时:

SELECT * WHERE { { ?s ?p ?o } UNION { GRAPH ?g { ?s ?p ?o } } }

我得到答案。但是当我尝试这个时:

SELECT * WHERE { ?s ?p ?o . FILTER (regex(?o, 'Apple','i')) }

我不明白。

我需要通过查询获取 startTime 和 endTime,我该怎么写?!

包括来自 OP 注释的代码

Graph myGraph = new Graph();
FileLoader.Load(myGraph, "C:\\Users\\hasoOn\\Desktop\\tt.RDF");
TripleStore store = new TripleStore();
store.Add(myGraph);
SparqlQueryParser parser = new SparqlQueryParser();
SparqlQuery q = parser.ParseFromString("PREFIX ex: <example.org/>; SELECT * WHERE { ex:Fadi ?p ?o }");
SparqlResultSet results = (SparqlResultSet)store.ExecuteQuery(q);
4

1 回答 1

2

假设根据您之前的问题,这也与 dotNetRDF 有关,您没有查询您认为的数据,引用 Querying with SPARQL文档:

进行查询的一个常见错误是,默认情况下查询通常仅在存储中未命名的默认图上运行 (取决于您的查询处理器)。因此,根据您的数据所在的图表以及您是否正确配置数据集,执行查询可能不会产生任何结果。有关配置不同类型数据集的讨论,请参阅SPARQL 数据集 页面。您还可以查看调试 SPARQL 查询,以了解在使用内存 SPARQL 引擎时调试查询发生的情况的方法。

我已经添加了重点,您提到的第一个查询选择了所有内容,而不管它在什么图形中,因此它返回结果的原因。

您的第二个查询仅查询可能不包含数据的默认图表,因此不返回任何内容,请参阅链接文档以获取有关如何正确配置数据集的更多信息。

修改您的查询以使用GRAPH子句,以便它实际访问数据中的命名图,或者显示您用于进行查询的代码,以便我可以为您提供有关如何适当修改它的指针,以便您的第二个查询正常工作。

编辑

现在看到您的代码,您确实没有查询您的数据,TripleStore当用于 SPARQL 查询时,有一个隐含的未命名图,这是您正在查询的默认图。要查询您的数据,您可以通过多种方式更改您的代码:

  1. g.BaseUri = null;在将图表添加到实例之前进行设置,TripleStore以便将您的数据视为默认图表
  2. 使用 a ISparqlDatasetand LeviathanQueryProcessorper 文档,以便您可以配置数据集以更灵活地使您的图形成为默认图形
  3. 正如已经建议的那样修改您的查询以使用GRAPH子句,以便您查询商店中的命名图而不是默认图
于 2013-04-29T22:14:20.360 回答