Вы можете попробовать мою библиотеку dotNetRDF , которая спроектирована так, что многие вещи могут быть доступны в стиле Linq, т. Е. Широко и широко используется IEnumerable<T>
в качестве возвращаемого типа во всей библиотеке.
Но у него нет полностью API в стиле Linq, такого как LinqToRdf, и я имею в виду, что у него нет методов, которые были у LinqToRdf, которые позволили бы вам написать что-то вроде следующего, и чтобы библиотека перевела его на SPARQL. или другой подходящий язык запросов под капотом:
MusicDataContext ctx = new MusicDataContext(@"http://localhost/linqtordf/SparqlQuery.aspx");
var q = (from t in ctx.Tracks
where t.Year == "2006" &&
t.GenreName == "History 5 | Fall 2006 | UC Berkeley"
orderby t.FileLocation
select new {t.Title, t.FileLocation}).Skip(10).Take(5);
Моя библиотека гораздо более низкого уровня, либо вам придется самостоятельно писать эквивалентный запрос SPARQL, либо написать блок кода, который извлекает различные тройки, используемые для идентификации чего-либо, и делает соответствующие сравнения, которые вы хотите.
В конце концов я намерен портировать LinqToRdf на использование dotNetRDF в качестве базовой библиотеки для доступа к RDF, но в данный момент это довольно низкий список приоритетов, так как я работаю над основным выпуском базовой библиотеки, который добавляет много новая функциональность, связанная с SPARQL 1.1
С точки зрения коммерческих возможностей взгляните на Intellidimension Semantics Framework , которая является коммерческой библиотекой, хотя есть бесплатная экспресс-версия - я не использовал библиотеку, поэтому понятия не имею, насколько она дружелюбна к Linq является. Основным недостатком бесплатной версии является очень строгая политика распространения.