dotnetrdf图Sparql查询
对于rdf三元组,如下所示:dotnetrdf图Sparql查询,rdf,sparql,triples,dotnetrdf,Rdf,Sparql,Triples,Dotnetrdf,对于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/X
<?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:nss="http://www.example.org/startTime"
xmlns:nse="http://www.example.org/endTime">
<rdf:Description rdf:about="Fadi">
<ns0:eat xmlns:ns0="http://example.org/">Apple</ns0:eat>
<nss:startTime>00:01:38</nss:startTime>
<nse:endTime>00:01:39</nse:endTime>
</rdf:Description>
<rdf:Description rdf:about="I">
<ns1:love xmlns:ns1="http://example.org/">You</ns1:love>
<nss:startTime>00:05:35</nss:startTime>
<nse:endTime>00:06:39</nse:endTime>
</rdf:Description>
</rdf:RDF>
]>
苹果
00:01:38
00:01:39
你
00:05:35
00:06:39
如何查询主语或宾语
我的代码:
Graph myGraph = new Graph();
FileLoader.Load(myGraph, "C:\\Users\\hasoOn\\Desktop\\tt.rdf");
TripleStore store = new TripleStore();
store.Add(myGraph);
SparqlParameterizedString queryString = new SparqlParameterizedString();
queryString.CommandText = "PREFIX ex: <http://example.org/> SELECT * WHERE { { ex:fadi ?p ?o } UNION { GRAPH ?g { ?s ?p ?o } } } ";
SparqlQueryParser parser = new SparqlQueryParser();
SparqlQuery query = parser.ParseFromString(queryString.CommandText);
SparqlResultSet results = (SparqlResultSet)store.ExecuteQuery(query);
if (results is SparqlResultSet)
{
SparqlResultSet rset = (SparqlResultSet)results;
foreach (SparqlResult result in rset)
{
Console.WriteLine(result);
}
}
Graph myGraph=new Graph();
Load(myGraph,“C:\\Users\\hasoOn\\Desktop\\tt.rdf”);
TripleStore=新的TripleStore();
store.Add(myGraph);
SparqlParameterizedString queryString=新的SparqlParameterizedString();
queryString.CommandText=“前缀ex:SELECT*WHERE{{ex:fadi?p?o}UNION{GRAPH?g{s?p?o}}”;
SparqlQueryParser解析器=新的SparqlQueryParser();
SparqlQuery query=parser.ParseFromString(queryString.CommandText);
SparqlResultSet results=(SparqlResultSet)store.ExecuteQuery(查询);
如果(结果为SparqlResultSet)
{
SparqlResultSet rset=(SparqlResultSet)结果;
foreach(rset中的SparqlResult结果)
{
控制台写入线(结果);
}
}
使用下面的代码,我可以从查询中获得所有答案。有人能帮我获取just subject=fadi吗?您的联合的第二部分负责您的结果:您从存储中的所有图形中查询所有三元组,因为没有绑定变量。第一部分实际上不返回任何内容 这里有两种解决方案: 1) 将图形添加到默认数据集中时使用:
myGraph.baseUri = null
添加store.add(myGraph)语句之前
那么查询SELECT*{ex:Fadi?p?o}就足够了
2) 您可以将查询更改为:
Select * from _yourGraphUriHere { ex:Fadi ?p ?o}
那应该会让你得到你想要的
顺便说一句,请记住URI是区分大小写的,因此ex:fadi不是您要查询的内容,而是ex:fadi。联合的第二部分负责您的结果:您查询存储中所有图形的所有三元组,因为没有绑定变量。第一部分实际上不返回任何内容 这里有两种解决方案: 1) 将图形添加到默认数据集中时使用:
myGraph.baseUri = null
添加store.add(myGraph)语句之前
那么查询SELECT*{ex:Fadi?p?o}就足够了
2) 您可以将查询更改为:
Select * from _yourGraphUriHere { ex:Fadi ?p ?o}
那应该会让你得到你想要的
顺便说一下,请记住URI是区分大小写的,因此ex:fadi不是您要查询的内容,而是ex:fadimyGraph.BaseUri=null;在store.add(myGraph)开始工作之前。。谢谢。myGraph.BaseUri=null;在store.add(myGraph)开始工作之前。。非常感谢。