使用F#在内存三重存储中实现语义Web

时间:2009-09-06 18:59:51

标签: f# semantic-web triplestore

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

是否有任何F#示例或项目已经在执行此操作?

5 个答案:

答案 0 :(得分:4)

SemWeb也是一个C#库,它提供了自己的基于SQL的三重存储 - http://razor.occams.info/code/semweb/

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

这是一个与勺子相同的程序16显示:

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作为支持商店

答案 1 :(得分:2)

查看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);
} 

答案 2 :(得分:1)

Intellidimension提供基于.NET的内存三重存储作为其Semantics 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

答案 3 :(得分: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

答案 4 :(得分:0)

我知道这并没有直接回答你的问题,但你可以使用4store这是一个稳定的,经验证的三元组,并在.Net中为它编写一个客户端,而不是开发自己的三元组。

相关问题