Hi Luigi, Parser.getinstance() should work even outside the OSGi container. We use it tests as well. However you have to have the jena parser implementation in the Classpath. The getInstance Method should then read the parser implementations from META-INF/services in the classpath. Remember, that the Parser class is provided by rdf.core but the Jena parser implementation is provided by rdf.jena.parser. So you need both of these in your test classpath or whatever classpath you are using.
For the other question. You can use org.apache.clerezza.rdf.core.impl.SimpleMGraph. But remember this is an in-memory graph. Mostly this is fine but when you pare huge amounts of data you could run out of memory. Daniel On 13 November 2012 16:11, Luigi Selmi <luigise...@gmail.com> wrote: > Hello Daniel, > thank you for the response. The solution that uses an instance of a parser > doesn't work I think for the reason that I have written, there is no > instance available outside the OSGi service platform (Fuseki). The code > that I use is > > org.apache.clerezza.rdf.core.serializedform.Parser parser = > org.apache.clerezza.rdf.core.serializedform.Parser.getInstance(); > InputStream is = subjectUrl.openStream(); > Graph subjectGraph = parser.parse(is, SupportedFormat.RDF_XML); > > returns an UnsupportedFormatException > > For the solution with the Jena parser I need a MGraph implemetation since > the parse method of the Jena parser requires the graph as an attribute. > > org.apache.clerezza.rdf.jena.parser.JenaParserProvider parser = new > org.apache.clerezza.rdf.jena.parser.JenaParserProvider(); > InputStream is = subjectUrl.openStream(); > MGraph subjectGraph = <???> > parser.parse(<???>, is, SupportedFormat.RDF_XML, null); > > Can you tell me what kind of implementation of the MGraph can I use to pass > to the parse method of the JenaParserProvider ? > > Best > > Luigi > > > > 2012/11/13 Daniel Spicar <dspi...@apache.org> > > > To parse serialized RDF formats in tests or without the OSGi environment > > you can use this: > > > > org.apache.clerezza.rdf.core.serializedform.Parser parser = > > org.apache.clerezza.rdf.core.serializedform.Parser.getInstance(); > > Graph graph = parser.parse( > > inputStream, formatString); > > > > formatString can be any of the supported formats, e.g. > > "application/rdf+xml" or "text/rdf+nt" > > > > The required dependencies are: > > > > For the Parser class > > <dependency> > > <groupId>org.apache.clerezza</groupId> > > <artifactId>rdf.core</artifactId> > > </dependency> > > > > For the parsing providers: > > <dependency> > > <groupId>org.apache.clerezza</groupId> > > <artifactId>rdf.jena.parser</artifactId> > > </dependency> > > > > You can also use the jena parser directly by instanciating it: > > new org.apache.clerezza.rdf.jena.parser.JenaParserProvider(); > > > > > > To bind a parser in the OSGi environment you can use this: > > > > @org.apache.felix.scr.annotations.Reference > > private org.apache.clerezza.rdf.core.serializedform.Parser parser; > > > > > > Note: Supported formats (by the jena parser) are: > > "application/rdf+xml"; > > "text/turtle"; > > "application/x-turtle"; > > "text/rdf+nt"; > > "text/rdf+n3"; > > "application/rdf+json"; > > > > Hope this helps. > > > > Daniel > > > > On 12 November 2012 19:40, Luigi Selmi <luigise...@gmail.com> wrote: > > > > > Hello > > > I am using Clerezza API to manage FOAF profiles. I need to parse foaf > > > RDF/XML files and so I need the parser provided by the Clerezza > platform > > > but don't know how to bind a parsing provider. I would like to test the > > > parser before creating the bundle to upload and activate on Felix. Is > > that > > > possible ? > > > > > > Thanks > > > > > > Luigi > > > > > >