SemWeb действительно предоставляет строительные блоки для того, что вы хотите.Глядя на документацию кажется, QueryResultSink
- это то, что вы хотите.Используя его, вы можете создать список результатов или работать непосредственно с результатами по мере их поступления.
В качестве альтернативы попробуйте dotnetrdf . В этом введении показано, что запросы приводят к SparqlResultSet , через который вы можете выполнять итерацию.
Из примеров:
TripleStore store = new TripleStore();
// ...data...
Object results = store.ExecuteQuery("SELECT * WHERE {?s ?p ?o}");
if (results is SparqlResultSet) {
SparqlResultSet rset = (SparqlResultSet)results;
foreach (SparqlResult result in rset) {
Console.WriteLine(result.ToString());
}
}