27 votes

Quelles sont les bonnes bibliothèques Java RDF

Je recherche une bibliothèque java légère pour traiter les données RDF. Il doit être capable d'analyser et d'écrire des données XML RDF. Je voudrais également qu'il prenne en charge la requête simple d'un modèle RDF. SPARQL serait bien mais pas obligatoire et je n'ai pas besoin de capacités d'inférence.

J'ai utilisé Jena, mais ce n'est pas très léger.

30voto

msbmsb Points 952

Jena (http://jena.sourceforge.net/) est le plus couramment utilisé à l'heure actuelle, et s'appuie fortement sur les normes de la communauté (OWL, SPARQL, etc). D'autres options sont les suivantes:

  • KOAN (http://kaon.semanticweb.org/), qui peut-être peut être utilisé dans un plus mis à l'échelle de la mode, mais s'écarte de pure normes avec certains propriétaires de langue et de ses extensions.

  • Sésame (http://www.openrdf.org/), qui vous permettra de trouver comparables à Iéna, sauf si vous êtes intéressé par une comparaison à grande échelle triple extraction de l'efficacité, ou vous avez besoin de l'appui de la CHOUETTE.

  • JRDF (http://jrdf.sourceforge.net/), soi-disant la combinaison de plusieurs de la RDF cadres, mais je ne peux pas dire que je sais rien à ce sujet.

Si vous n'avez pas vraiment besoin de SPARQL ou d'inférence, ce qui est le but principal de la RDF store? Simplement en les tirant et en les transformant à la sortie différente?

.msb

6voto

Guido García Points 13252

Jena est le standard de facto cadre pour la construction Sémantique des applications Web en Java", Il fournit un environnement programmatique pour RDF, RDFS et OWL, SPARQL et comprend une règle basée sur le moteur d'inférence". Quel est exactement votre problème avec Jena ?

Je pense que la deuxième plus largement utilisé alternative est de Sésame (http://www.openrdf.org/). Prendre un coup d'oeil.

Si vous Google de RDF et Java, vous trouverez d'autres alternatives comme le JRDF (http://jrdf.sourceforge.net/) ... mais je n'ai pas essayé.

Ce qui concerne.

4voto

Ian Dickinson Points 7956

Je pense que vous avez besoin de décompresser un peu ce que tu veux dire par léger. Si tu parles de la taille de l' .jar fichiers dans un Jena de déploiement, vous pouvez être en mesure de laisser certains d'entre eux: icu4j.jar, par exemple, n'est utilisée que si votre application gère les données internationalisées. Toutefois, si vous exécutez un site web-service, le déploiement de la taille n'a probablement pas d'importance.

Alternativement, si votre accent est mis sur la performance, il serait utile si vous pouviez poster quelques chiffres et/ou des extraits de code. Il y a quelques écueils à éviter (comme ne pas utiliser la valeur par défaut OntModel si vous n'avez pas besoin de l'inférence). Certains des nouveaux persistante magasin de cartes, tels que le TDB et SDB, peut donner significative de vitesse-ups avec de plus grands volumes de données. Sachez cependant, que certains de Jena performance de la sanction vient de W3C suivant spécifications de très près. Être léger au détriment de la pleine conformité peut avoir un impact sur votre application, de façon inattendue, dans l'avenir, surtout si vous prévoyez d'interopérabilité avec d'autres services de données.

Je suppose que l'autre interprétation de l'léger serait le modèle de programmation. Je pense qu'il est juste de dire que Jena paie un impôt en suivant de près la RDF-triple point de vue du monde. C'est un peu comme la programmation en assembleur si ce que vous voulez vraiment est un langage de haut niveau. Jena de l'ontologie de l'API peut vous aider, ou vous préférez peut-être une CHOUETTE centrée sur l'API comme http://owlapi.sourceforge.net/. Encore une fois, si vous pouvez poster des exemples précis de ce que vous essayez d'atteindre, nous pouvons donner plus de conseils personnalisés. La prochaine version de Jena sera en charge Java génériques, qui va certainement aider à lisser l'API, mais il n'y a pas de date de sortie prévue pour l'instant.

Ian

2voto

paulmurray Points 1764

Je viens d'utiliser JRDF pour lire du XML RDF afin de pouvoir y extraire les individus nommés distincts. c'était un jeu d'enfant - une seule bibliothèque à mettre sur le chemin. La partie fonctionnelle du code était:

  in = new FileInputStream("MYRDF.rdf");
 final Graph jrdfMem = JRDF_FACTORY.getGraph();
 Parser parser = new GraphRdfXmlParser(jrdfMem, new MemMapFactory());
 parser.parse(in, toEscapedString(new URL("http://foo.bar.org/foo#")));
 ClosableIterable<Triple> triples = jrdfMem.find(
   ANY_SUBJECT_NODE, ANY_PREDICATE_NODE, ANY_OBJECT_NODE);
 for(Triple t: triples) {
   .....
 }
 triples.close();
 

1voto

Steen Points 3427

Si nous bande de vos besoins au strict minimum, ce que j'ai lu, c'est que vous souhaitez pour parser du XML (qui arrive juste à contenir RDF). Si votre RDF sont vraiment simple, Vous pouvez construire un discbased comme une Carte à l'aide de StAX pour gérer les déclarations. Ce serait bien sûr très spécifiques à l'implémentation et pas très générique, mais d'un autre côté, ça pourrait être vraiment simple et léger (selon la taille de la cible données en RDF, qui est).

Mais je voudrais vraiment - comme le reste des gars ici - recommandons l'utilisation d'Iéna. Analyse syntaxique de RDF est aussi simple que d'utiliser un Modèle.lire

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X