2009-09-06 7 views

Répondre

1

Intellidimension offre un magasin triple .NET basée en mémoire dans le cadre de leur Semantics SDK. Ils fournissent souvent des licences gratuites pour la recherche/éducation si vous les contactez. J'utilise leur technologie tous les jours depuis C# et PowerShell et j'apprécie énormément.

//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 
4

Il y a aussi SemWeb qui est une bibliothèque C# qui fournit son propre SQL base Triple Store - http://razor.occams.info/code/semweb/

Je travaille sur une nouvelle bibliothèque C# pour RDF appelé dotNetRDF et vient de sortir le dernier Alpha http://www.dotnetrdf.org.

Voici un programme équivalent à celui spoon16 a montré:

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 

Ma bibliothèque prend actuellement en charge mes propres bases de données SQL, AllegroGraph, 4store, Joseki, Sésame, Talis et Virtuoso comme les magasins d'accompagnement

2

Check out LinqToRdf qui, en plus des outils de modélisation simples hébergées VS.NET, fournit un ensemble de données fournisseur complet de requêtes LINQ et réimportations lorsqu'ils traitent avec des bases de données en mémoire:

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); 
} 
+0

PS: étant compatible .NET il devrait fonctionner correctement avec F # ... –

Questions connexes