4

使用 F# 的基本 .NET 集合类实现内存语义 Web 三重存储的有效方法是什么?

是否有任何 F# 示例或项目已经这样做了?

4

5 回答 5

4

还有 SemWeb,它是一个 C# 库,提供它自己的基于 SQL 的 Triple Store - http://razor.occams.info/code/semweb/

我正在为 RDF 开发一个名为 dotNetRDF 的新 C# 库,并且刚刚发布了最新的 Alpha http://www.dotnetrdf.org

这是一个与 onespoon16 显示的等效程序:

open System
open VDS.RDF
open VDS.RDF.Parsing
open VDS.RDF.Query

//Get a Graph and fill it from a file
let g = new Graph()
let parser = new TurtleParser()
parser.Load(g, "test.ttl")

//Place into a Triple Store and query
let store = new TripleStore()
store.Load(g)
let results = store.ExecuteQuery("SELECT ?s ?p ?o WHERE {?s ?p ?o} LIMIT 10") :?> SparqlResultSet

//Output the results
Console.WriteLine(results.Count.ToString() ^ " Results")
for result in results.Results do
  Console.WriteLine(result.ToString())
done

//Wait for user to hit enter so they can see the results
Console.ReadLine() |> ignore

我的库目前支持我自己的 SQL 数据库、AllegroGraph、4store、Joseki、Sesame、Talis 和 Virtuoso 作为后备存储

于 2009-09-28T10:57:34.890 回答
3

查看LinqToRdf,除了简单的 VS.NET 托管建模工具外,它还提供了完整的 LINQ 查询提供程序和处理内存数据库时的往返数据:

var 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);

foreach (var track in q)
{
   Console.WriteLine(track.Title + ": " + track.FileLocation);
} 
于 2009-10-12T03:07:28.153 回答
1

Intellidimension 提供了一个基于 .NET 的内存三重存储,作为其语义 SDK的一部分。如果您与他们联系,他们通常会提供免费的研究/教育许可证。

我每天都使用他们的 C# 和 PowerShell 技术,我真的很喜欢。

//disclaimer: really the first time I have used F# so this may not be any good...
//but it does work

open Intellidimension.Rdf
open System.IO

let rdfXml = File.ReadAllText(@"C:\ontology.owl")
let gds = new GraphDataSource()
gds.Read(rdfXml) |> ignore
let tbl = gds.Query("select ?s ?p ?o where {?s ?p ?o} limit 10")

System.Console.Write(tbl.RowCount)
System.Console.ReadLine() |> ignore
于 2009-09-06T22:26:01.220 回答
1

Aduna 的 Sesame 框架已移植到 .NET。这是一个示例代码,展示了如何使用 F# 连接到 Sesame Http 存储库:http://debian.fmi.uni-sofia.bg/~toncho/myblog/archives/309-Using-F-to-connect-to -a-Sesame-repository.html

于 2010-12-27T19:39:06.720 回答
0

我知道这并不能直接回答您的问题,但您可以使用4store,它是一个稳定的、经过验证的三重存储,并在 .Net 中为其编写客户端,而不是开发自己的三重存储。

相关问题

于 2009-09-06T21:55:54.713 回答