鉴于此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')) }
我得到了nothn。
我需要使用查询获取startTime和endTime,我该如何编写它?!
包括来自OPs评论的代码
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);
答案 0 :(得分:2)
假设根据您之前的问题,这也与dotNetRDF有关,您不是在查询您认为的数据,而是引用Querying with SPARQL文档:
查询的常见错误是默认情况下查询 通常仅对商店中未命名的默认图表进行操作 (取决于您的查询处理器)。因此执行查询可能 取决于您的数据是什么图表以及是否产生结果 您正确配置了数据集。请参阅SPARQL Datasets 讨论配置不同类型的数据集的页面。您 也可以查看Debugging SPARQL Queries以获取调试内容的方法 在使用内存中的SPARQL引擎时,您的查询正在发生。
我已经添加了重点,你提到的第一个查询选择了所有内容,无论它是什么图形,因此它返回结果。
您的第二个查询仅查询可能不包含任何数据的默认图表,因此不返回任何内容,请参阅链接文档以获取有关如何正确配置数据集的更多信息。
修改查询以使用GRAPH
子句,以便它实际访问数据中的命名图形或显示用于进行查询的代码,以便我可以为您提供有关如何正确修改它的指示,以便您第二个查询有效。
现在看到你的代码确实没有查询你的数据,用于SPARQL查询的TripleStore
有一个隐含的未命名图,这是你要查询的默认图。要查询数据,您可以通过多种方式更改代码:
g.BaseUri = null;
实例之前设置TripleStore
,以便将您的数据视为默认图表ISparqlDataset
和LeviathanQueryProcessor
,以便您可以配置数据集,使图表更灵活地成为默认图表GRAPH
子句,以便查询商店中的命名图表而不是默认图表