You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@any23.apache.org by "Paolo Castagna (Created) (JIRA)" <ji...@apache.org> on 2011/11/06 07:22:51 UTC

[jira] [Created] (ANY23-19) Abstract away any specific RDF APIs

Abstract away any specific RDF APIs
-----------------------------------

                 Key: ANY23-19
                 URL: https://issues.apache.org/jira/browse/ANY23-19
             Project: Apache Any23
          Issue Type: New Feature
            Reporter: Paolo Castagna


Any23 currently uses Sesame to work with or parse RDF. Specifically Any23 uses these classes from org.openrdf.* packages:

org.openrdf.model.BNode
org.openrdf.model.datatypes.XMLDatatypeUtil
org.openrdf.model.impl.LiteralImpl
org.openrdf.model.impl.URIImpl
org.openrdf.model.impl.ValueFactoryImpl
org.openrdf.model.Literal
org.openrdf.model.Resource
org.openrdf.model.Statement
org.openrdf.model.URI
org.openrdf.model.Value
org.openrdf.model.ValueFactory
org.openrdf.model.vocabulary.OWL
org.openrdf.model.vocabulary.RDF
org.openrdf.model.vocabulary.RDFS
org.openrdf.model.vocabulary.XMLSchema
org.openrdf.repository.RepositoryConnection
org.openrdf.repository.RepositoryException
org.openrdf.repository.RepositoryResult
org.openrdf.repository.sail.SailRepository
org.openrdf.rio.helpers.RDFParserBase
org.openrdf.rio.ntriples.NTriplesParser
org.openrdf.rio.ntriples.NTriplesUtil
org.openrdf.rio.ntriples.NTriplesWriter
org.openrdf.rio.ParseErrorListener
org.openrdf.rio.ParseLocationListener
org.openrdf.rio.RDFFormat
org.openrdf.rio.RDFHandler
org.openrdf.rio.RDFHandlerException
org.openrdf.rio.RDFParseException
org.openrdf.rio.RDFParser
org.openrdf.rio.rdfxml.RDFXMLParser
org.openrdf.rio.rdfxml.RDFXMLWriter
org.openrdf.rio.turtle.TurtleWriter
org.openrdf.sail.memory.MemoryStore
org.openrdf.sail.Sail
org.openrdf.sail.SailException

Would it be possible to abstract away any specific RDF APIs to allow Any23 users to chose between, say: Apache Clerezza, Apache Jena, Sesame and/or others?

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Updated] (ANY23-19) Abstract away any specific RDF APIs

Posted by "Paolo Castagna (Updated) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/ANY23-19?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Paolo Castagna updated ANY23-19:
--------------------------------

    Priority: Minor  (was: Major)
    
> Abstract away any specific RDF APIs
> -----------------------------------
>
>                 Key: ANY23-19
>                 URL: https://issues.apache.org/jira/browse/ANY23-19
>             Project: Apache Any23
>          Issue Type: New Feature
>    Affects Versions: 0.7.0
>            Reporter: Paolo Castagna
>            Priority: Minor
>             Fix For: 0.8.0
>
>
> Any23 currently uses Sesame to work with or parse RDF. Specifically Any23 uses these classes from org.openrdf.* packages:
> org.openrdf.model.BNode
> org.openrdf.model.datatypes.XMLDatatypeUtil
> org.openrdf.model.impl.LiteralImpl
> org.openrdf.model.impl.URIImpl
> org.openrdf.model.impl.ValueFactoryImpl
> org.openrdf.model.Literal
> org.openrdf.model.Resource
> org.openrdf.model.Statement
> org.openrdf.model.URI
> org.openrdf.model.Value
> org.openrdf.model.ValueFactory
> org.openrdf.model.vocabulary.OWL
> org.openrdf.model.vocabulary.RDF
> org.openrdf.model.vocabulary.RDFS
> org.openrdf.model.vocabulary.XMLSchema
> org.openrdf.repository.RepositoryConnection
> org.openrdf.repository.RepositoryException
> org.openrdf.repository.RepositoryResult
> org.openrdf.repository.sail.SailRepository
> org.openrdf.rio.helpers.RDFParserBase
> org.openrdf.rio.ntriples.NTriplesParser
> org.openrdf.rio.ntriples.NTriplesUtil
> org.openrdf.rio.ntriples.NTriplesWriter
> org.openrdf.rio.ParseErrorListener
> org.openrdf.rio.ParseLocationListener
> org.openrdf.rio.RDFFormat
> org.openrdf.rio.RDFHandler
> org.openrdf.rio.RDFHandlerException
> org.openrdf.rio.RDFParseException
> org.openrdf.rio.RDFParser
> org.openrdf.rio.rdfxml.RDFXMLParser
> org.openrdf.rio.rdfxml.RDFXMLWriter
> org.openrdf.rio.turtle.TurtleWriter
> org.openrdf.sail.memory.MemoryStore
> org.openrdf.sail.Sail
> org.openrdf.sail.SailException
> Would it be possible to abstract away any specific RDF APIs to allow Any23 users to chose between, say: Apache Clerezza [1], Apache Jena [2], Sesame [3] and/or others?
> An example of small RDF distiller which does this is java-rdfa [4]. Maybe a similar agnostic (but easy to integrate) approach is possible for Any23. Although, java-rdfa does not need to parse RDF content itself. 
>  [1] http://incubator.apache.org/clerezza/
>  [2] http://incubator.apache.org/jena/
>  [3] http://www.openrdf.org/
>  [4] https://github.com/shellac/java-rdfa

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Commented] (ANY23-19) Abstract away any specific RDF APIs

Posted by "Max Völkel (Commented JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/ANY23-19?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13251955#comment-13251955 ] 

Max Völkel commented on ANY23-19:
---------------------------------

Take a look at RDF2Go (http://semanticweb.org/wiki/RDF2Go). It has been designed as a triple store abstraction layer. On the other hand, Clerezza can potentially also play this role.
                
> Abstract away any specific RDF APIs
> -----------------------------------
>
>                 Key: ANY23-19
>                 URL: https://issues.apache.org/jira/browse/ANY23-19
>             Project: Apache Any23
>          Issue Type: New Feature
>    Affects Versions: 0.7.0
>            Reporter: Paolo Castagna
>             Fix For: 0.8.0
>
>
> Any23 currently uses Sesame to work with or parse RDF. Specifically Any23 uses these classes from org.openrdf.* packages:
> org.openrdf.model.BNode
> org.openrdf.model.datatypes.XMLDatatypeUtil
> org.openrdf.model.impl.LiteralImpl
> org.openrdf.model.impl.URIImpl
> org.openrdf.model.impl.ValueFactoryImpl
> org.openrdf.model.Literal
> org.openrdf.model.Resource
> org.openrdf.model.Statement
> org.openrdf.model.URI
> org.openrdf.model.Value
> org.openrdf.model.ValueFactory
> org.openrdf.model.vocabulary.OWL
> org.openrdf.model.vocabulary.RDF
> org.openrdf.model.vocabulary.RDFS
> org.openrdf.model.vocabulary.XMLSchema
> org.openrdf.repository.RepositoryConnection
> org.openrdf.repository.RepositoryException
> org.openrdf.repository.RepositoryResult
> org.openrdf.repository.sail.SailRepository
> org.openrdf.rio.helpers.RDFParserBase
> org.openrdf.rio.ntriples.NTriplesParser
> org.openrdf.rio.ntriples.NTriplesUtil
> org.openrdf.rio.ntriples.NTriplesWriter
> org.openrdf.rio.ParseErrorListener
> org.openrdf.rio.ParseLocationListener
> org.openrdf.rio.RDFFormat
> org.openrdf.rio.RDFHandler
> org.openrdf.rio.RDFHandlerException
> org.openrdf.rio.RDFParseException
> org.openrdf.rio.RDFParser
> org.openrdf.rio.rdfxml.RDFXMLParser
> org.openrdf.rio.rdfxml.RDFXMLWriter
> org.openrdf.rio.turtle.TurtleWriter
> org.openrdf.sail.memory.MemoryStore
> org.openrdf.sail.Sail
> org.openrdf.sail.SailException
> Would it be possible to abstract away any specific RDF APIs to allow Any23 users to chose between, say: Apache Clerezza [1], Apache Jena [2], Sesame [3] and/or others?
> An example of small RDF distiller which does this is java-rdfa [4]. Maybe a similar agnostic (but easy to integrate) approach is possible for Any23. Although, java-rdfa does not need to parse RDF content itself. 
>  [1] http://incubator.apache.org/clerezza/
>  [2] http://incubator.apache.org/jena/
>  [3] http://www.openrdf.org/
>  [4] https://github.com/shellac/java-rdfa

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

[jira] [Commented] (ANY23-19) Abstract away any specific RDF APIs

Posted by "Lewis John McGibbney (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/ANY23-19?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13179795#comment-13179795 ] 

Lewis John McGibbney commented on ANY23-19:
-------------------------------------------

Hey Paolo, with regards to Chris' recent comments on the dev list and the stub report he filed, how did you get on wrt moving away from the packages you've highlighted above and also with progressing with more collaboration between ASF RDF-type projects? I'm using this issue as a basis to kick the converation off and hopefully others will join in. 
                
> Abstract away any specific RDF APIs
> -----------------------------------
>
>                 Key: ANY23-19
>                 URL: https://issues.apache.org/jira/browse/ANY23-19
>             Project: Apache Any23
>          Issue Type: New Feature
>            Reporter: Paolo Castagna
>
> Any23 currently uses Sesame to work with or parse RDF. Specifically Any23 uses these classes from org.openrdf.* packages:
> org.openrdf.model.BNode
> org.openrdf.model.datatypes.XMLDatatypeUtil
> org.openrdf.model.impl.LiteralImpl
> org.openrdf.model.impl.URIImpl
> org.openrdf.model.impl.ValueFactoryImpl
> org.openrdf.model.Literal
> org.openrdf.model.Resource
> org.openrdf.model.Statement
> org.openrdf.model.URI
> org.openrdf.model.Value
> org.openrdf.model.ValueFactory
> org.openrdf.model.vocabulary.OWL
> org.openrdf.model.vocabulary.RDF
> org.openrdf.model.vocabulary.RDFS
> org.openrdf.model.vocabulary.XMLSchema
> org.openrdf.repository.RepositoryConnection
> org.openrdf.repository.RepositoryException
> org.openrdf.repository.RepositoryResult
> org.openrdf.repository.sail.SailRepository
> org.openrdf.rio.helpers.RDFParserBase
> org.openrdf.rio.ntriples.NTriplesParser
> org.openrdf.rio.ntriples.NTriplesUtil
> org.openrdf.rio.ntriples.NTriplesWriter
> org.openrdf.rio.ParseErrorListener
> org.openrdf.rio.ParseLocationListener
> org.openrdf.rio.RDFFormat
> org.openrdf.rio.RDFHandler
> org.openrdf.rio.RDFHandlerException
> org.openrdf.rio.RDFParseException
> org.openrdf.rio.RDFParser
> org.openrdf.rio.rdfxml.RDFXMLParser
> org.openrdf.rio.rdfxml.RDFXMLWriter
> org.openrdf.rio.turtle.TurtleWriter
> org.openrdf.sail.memory.MemoryStore
> org.openrdf.sail.Sail
> org.openrdf.sail.SailException
> Would it be possible to abstract away any specific RDF APIs to allow Any23 users to chose between, say: Apache Clerezza [1], Apache Jena [2], Sesame [3] and/or others?
> An example of small RDF distiller which does this is java-rdfa [4]. Maybe a similar agnostic (but easy to integrate) approach is possible for Any23. Although, java-rdfa does not need to parse RDF content itself. 
>  [1] http://incubator.apache.org/clerezza/
>  [2] http://incubator.apache.org/jena/
>  [3] http://www.openrdf.org/
>  [4] https://github.com/shellac/java-rdfa

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Issue Comment Edited] (ANY23-19) Abstract away any specific RDF APIs

Posted by "Paolo Castagna (Issue Comment Edited) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/ANY23-19?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13253188#comment-13253188 ] 

Paolo Castagna edited comment on ANY23-19 at 4/13/12 7:03 AM:
--------------------------------------------------------------

Hi Peter, thanks for your comments (which I truly appreciate).

> ... representing everything as strings

As I said, java-rdfa do not provide any data checking/validation. Does Any23 currently guarantee that all the RDF triples generated are "valid" (checking syntax of URIs/IRIs, literals, etc.)? If it does, using strings would not certainly be an improvement, I agree. If it does not, then using an RDF library vs. plain strings does not provide a big advantage.

> How often is Any23 currently being used as a library? 

I do not know the answer to this question, to me Any23 is valuable as a library (in particular if it can be used with projects such as Apache Nutch and Hadoop/MapReduce).
You should also ask "how often Any23 could be used as a library?", I don't know the answer to this either.

> They should be accessed using a ValueFactory and used as their Interfaces. This doesn't change any of the libraries that are used, but it is better practice. 

Moving the creation of Sesame specific objects to a single place in Any23 is a good idea.

> Switching to another library may cause the bloat that you say you do not want. 

Exactly, I did not propose that, certainly not at this point in time.

> Jena and its immediate dependencies is quite large compared to the modular sesame jar files

I know (and I always said it in the past). Things might change in future and indeed I think that for a project such as Jena a small as possible jena-core.jar with no inference, ontology support, not even RDF/XML parsing... just a low level RDF graph API, would be good.
                
      was (Author: castagna):
    Hi Peter, thanks for your comments (which I truly appreciate).

bq. ... representing everything as strings

As I said, java-rdfa do not provide any data checking/validation. Does Any23 currently guarantee that all the RDF triples generated are "valid" (checking syntax of URIs/IRIs, literals, etc.)? If it does, using strings would not certainly be an improvement, I agree. If it does not, then using an RDF library vs. plain strings does not provide a big advantage.

bq. How often is Any23 currently being used as a library? 

I do not know the answer to this question, to me Any23 is valuable as a library (in particular if it can be used with projects such as Apache Nutch and Hadoop/MapReduce).
You should also ask "how often Any23 could be used as a library?", I don't know the answer to this either.

bq. They should be accessed using a ValueFactory and used as their Interfaces. This doesn't change any of the libraries that are used, but it is better practice. 

Moving the creation of Sesame specific objects to a single place in Any23 is a good idea.

bq. Switching to another library may cause the bloat that you say you do not want. 

Exactly, I did not propose that, certainly not at this point in time.

bq. Jena and its immediate dependencies is quite large compared to the modular sesame jar files

I know (and I always said it in the past). Things might change in future and indeed I think that for a project such as Jena a small as possible jena-core.jar with no inference, ontology support, not even RDF/XML parsing... just a low level RDF graph API, would be good.
                  
> Abstract away any specific RDF APIs
> -----------------------------------
>
>                 Key: ANY23-19
>                 URL: https://issues.apache.org/jira/browse/ANY23-19
>             Project: Apache Any23
>          Issue Type: New Feature
>    Affects Versions: 0.7.0
>            Reporter: Paolo Castagna
>            Priority: Minor
>             Fix For: 0.8.0
>
>
> Any23 currently uses Sesame to work with or parse RDF. Specifically Any23 uses these classes from org.openrdf.* packages:
> org.openrdf.model.BNode
> org.openrdf.model.datatypes.XMLDatatypeUtil
> org.openrdf.model.impl.LiteralImpl
> org.openrdf.model.impl.URIImpl
> org.openrdf.model.impl.ValueFactoryImpl
> org.openrdf.model.Literal
> org.openrdf.model.Resource
> org.openrdf.model.Statement
> org.openrdf.model.URI
> org.openrdf.model.Value
> org.openrdf.model.ValueFactory
> org.openrdf.model.vocabulary.OWL
> org.openrdf.model.vocabulary.RDF
> org.openrdf.model.vocabulary.RDFS
> org.openrdf.model.vocabulary.XMLSchema
> org.openrdf.repository.RepositoryConnection
> org.openrdf.repository.RepositoryException
> org.openrdf.repository.RepositoryResult
> org.openrdf.repository.sail.SailRepository
> org.openrdf.rio.helpers.RDFParserBase
> org.openrdf.rio.ntriples.NTriplesParser
> org.openrdf.rio.ntriples.NTriplesUtil
> org.openrdf.rio.ntriples.NTriplesWriter
> org.openrdf.rio.ParseErrorListener
> org.openrdf.rio.ParseLocationListener
> org.openrdf.rio.RDFFormat
> org.openrdf.rio.RDFHandler
> org.openrdf.rio.RDFHandlerException
> org.openrdf.rio.RDFParseException
> org.openrdf.rio.RDFParser
> org.openrdf.rio.rdfxml.RDFXMLParser
> org.openrdf.rio.rdfxml.RDFXMLWriter
> org.openrdf.rio.turtle.TurtleWriter
> org.openrdf.sail.memory.MemoryStore
> org.openrdf.sail.Sail
> org.openrdf.sail.SailException
> Would it be possible to abstract away any specific RDF APIs to allow Any23 users to chose between, say: Apache Clerezza [1], Apache Jena [2], Sesame [3] and/or others?
> An example of small RDF distiller which does this is java-rdfa [4]. Maybe a similar agnostic (but easy to integrate) approach is possible for Any23. Although, java-rdfa does not need to parse RDF content itself. 
>  [1] http://incubator.apache.org/clerezza/
>  [2] http://incubator.apache.org/jena/
>  [3] http://www.openrdf.org/
>  [4] https://github.com/shellac/java-rdfa

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Commented] (ANY23-19) Abstract away any specific RDF APIs

Posted by "Paolo Castagna (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/ANY23-19?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13253208#comment-13253208 ] 

Paolo Castagna commented on ANY23-19:
-------------------------------------

> 3.1M - icu4j-3.4.4.jar 

This is gone (thanks Damian, thanks Andy): https://issues.apache.org/jira/browse/JENA-177
                
> Abstract away any specific RDF APIs
> -----------------------------------
>
>                 Key: ANY23-19
>                 URL: https://issues.apache.org/jira/browse/ANY23-19
>             Project: Apache Any23
>          Issue Type: Wish
>    Affects Versions: 0.7.0
>            Reporter: Paolo Castagna
>            Priority: Minor
>             Fix For: 0.8.0
>
>
> Any23 currently uses Sesame to work with or parse RDF. Specifically Any23 uses these classes from org.openrdf.* packages:
> org.openrdf.model.BNode
> org.openrdf.model.datatypes.XMLDatatypeUtil
> org.openrdf.model.impl.LiteralImpl
> org.openrdf.model.impl.URIImpl
> org.openrdf.model.impl.ValueFactoryImpl
> org.openrdf.model.Literal
> org.openrdf.model.Resource
> org.openrdf.model.Statement
> org.openrdf.model.URI
> org.openrdf.model.Value
> org.openrdf.model.ValueFactory
> org.openrdf.model.vocabulary.OWL
> org.openrdf.model.vocabulary.RDF
> org.openrdf.model.vocabulary.RDFS
> org.openrdf.model.vocabulary.XMLSchema
> org.openrdf.repository.RepositoryConnection
> org.openrdf.repository.RepositoryException
> org.openrdf.repository.RepositoryResult
> org.openrdf.repository.sail.SailRepository
> org.openrdf.rio.helpers.RDFParserBase
> org.openrdf.rio.ntriples.NTriplesParser
> org.openrdf.rio.ntriples.NTriplesUtil
> org.openrdf.rio.ntriples.NTriplesWriter
> org.openrdf.rio.ParseErrorListener
> org.openrdf.rio.ParseLocationListener
> org.openrdf.rio.RDFFormat
> org.openrdf.rio.RDFHandler
> org.openrdf.rio.RDFHandlerException
> org.openrdf.rio.RDFParseException
> org.openrdf.rio.RDFParser
> org.openrdf.rio.rdfxml.RDFXMLParser
> org.openrdf.rio.rdfxml.RDFXMLWriter
> org.openrdf.rio.turtle.TurtleWriter
> org.openrdf.sail.memory.MemoryStore
> org.openrdf.sail.Sail
> org.openrdf.sail.SailException
> Would it be possible to abstract away any specific RDF APIs to allow Any23 users to chose between, say: Apache Clerezza [1], Apache Jena [2], Sesame [3] and/or others?
> An example of small RDF distiller which does this is java-rdfa [4]. Maybe a similar agnostic (but easy to integrate) approach is possible for Any23. Although, java-rdfa does not need to parse RDF content itself. 
>  [1] http://incubator.apache.org/clerezza/
>  [2] http://incubator.apache.org/jena/
>  [3] http://www.openrdf.org/
>  [4] https://github.com/shellac/java-rdfa

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Commented] (ANY23-19) Abstract away any specific RDF APIs

Posted by "Paolo Castagna (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/ANY23-19?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13252290#comment-13252290 ] 

Paolo Castagna commented on ANY23-19:
-------------------------------------

Hi Max, the thing is: adding yet another dependency is going to make Any23 bigger and more complex. 
Can something simple be done without adding yet another dependency?
As I said, an example of a small RDF distiller which does this is java-rdfa (https://github.com/shellac/java-rdfa). Third party RDF APIs become only an optional dependency and people are free to choose which one they want/need simply adding that to their classpath (in a very similar way to what SLF4j does for logging frameworks).
The only thing tricky is "validation", but Any23 could chose not to validate URLs/IRIs, etc. and simply relay on the third party RDF APIs to do that.
                
> Abstract away any specific RDF APIs
> -----------------------------------
>
>                 Key: ANY23-19
>                 URL: https://issues.apache.org/jira/browse/ANY23-19
>             Project: Apache Any23
>          Issue Type: New Feature
>    Affects Versions: 0.7.0
>            Reporter: Paolo Castagna
>             Fix For: 0.8.0
>
>
> Any23 currently uses Sesame to work with or parse RDF. Specifically Any23 uses these classes from org.openrdf.* packages:
> org.openrdf.model.BNode
> org.openrdf.model.datatypes.XMLDatatypeUtil
> org.openrdf.model.impl.LiteralImpl
> org.openrdf.model.impl.URIImpl
> org.openrdf.model.impl.ValueFactoryImpl
> org.openrdf.model.Literal
> org.openrdf.model.Resource
> org.openrdf.model.Statement
> org.openrdf.model.URI
> org.openrdf.model.Value
> org.openrdf.model.ValueFactory
> org.openrdf.model.vocabulary.OWL
> org.openrdf.model.vocabulary.RDF
> org.openrdf.model.vocabulary.RDFS
> org.openrdf.model.vocabulary.XMLSchema
> org.openrdf.repository.RepositoryConnection
> org.openrdf.repository.RepositoryException
> org.openrdf.repository.RepositoryResult
> org.openrdf.repository.sail.SailRepository
> org.openrdf.rio.helpers.RDFParserBase
> org.openrdf.rio.ntriples.NTriplesParser
> org.openrdf.rio.ntriples.NTriplesUtil
> org.openrdf.rio.ntriples.NTriplesWriter
> org.openrdf.rio.ParseErrorListener
> org.openrdf.rio.ParseLocationListener
> org.openrdf.rio.RDFFormat
> org.openrdf.rio.RDFHandler
> org.openrdf.rio.RDFHandlerException
> org.openrdf.rio.RDFParseException
> org.openrdf.rio.RDFParser
> org.openrdf.rio.rdfxml.RDFXMLParser
> org.openrdf.rio.rdfxml.RDFXMLWriter
> org.openrdf.rio.turtle.TurtleWriter
> org.openrdf.sail.memory.MemoryStore
> org.openrdf.sail.Sail
> org.openrdf.sail.SailException
> Would it be possible to abstract away any specific RDF APIs to allow Any23 users to chose between, say: Apache Clerezza [1], Apache Jena [2], Sesame [3] and/or others?
> An example of small RDF distiller which does this is java-rdfa [4]. Maybe a similar agnostic (but easy to integrate) approach is possible for Any23. Although, java-rdfa does not need to parse RDF content itself. 
>  [1] http://incubator.apache.org/clerezza/
>  [2] http://incubator.apache.org/jena/
>  [3] http://www.openrdf.org/
>  [4] https://github.com/shellac/java-rdfa

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Updated] (ANY23-19) Abstract away any specific RDF APIs

Posted by "Paolo Castagna (Updated) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/ANY23-19?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Paolo Castagna updated ANY23-19:
--------------------------------

    Issue Type: Wish  (was: New Feature)
    
> Abstract away any specific RDF APIs
> -----------------------------------
>
>                 Key: ANY23-19
>                 URL: https://issues.apache.org/jira/browse/ANY23-19
>             Project: Apache Any23
>          Issue Type: Wish
>    Affects Versions: 0.7.0
>            Reporter: Paolo Castagna
>            Priority: Minor
>             Fix For: 0.8.0
>
>
> Any23 currently uses Sesame to work with or parse RDF. Specifically Any23 uses these classes from org.openrdf.* packages:
> org.openrdf.model.BNode
> org.openrdf.model.datatypes.XMLDatatypeUtil
> org.openrdf.model.impl.LiteralImpl
> org.openrdf.model.impl.URIImpl
> org.openrdf.model.impl.ValueFactoryImpl
> org.openrdf.model.Literal
> org.openrdf.model.Resource
> org.openrdf.model.Statement
> org.openrdf.model.URI
> org.openrdf.model.Value
> org.openrdf.model.ValueFactory
> org.openrdf.model.vocabulary.OWL
> org.openrdf.model.vocabulary.RDF
> org.openrdf.model.vocabulary.RDFS
> org.openrdf.model.vocabulary.XMLSchema
> org.openrdf.repository.RepositoryConnection
> org.openrdf.repository.RepositoryException
> org.openrdf.repository.RepositoryResult
> org.openrdf.repository.sail.SailRepository
> org.openrdf.rio.helpers.RDFParserBase
> org.openrdf.rio.ntriples.NTriplesParser
> org.openrdf.rio.ntriples.NTriplesUtil
> org.openrdf.rio.ntriples.NTriplesWriter
> org.openrdf.rio.ParseErrorListener
> org.openrdf.rio.ParseLocationListener
> org.openrdf.rio.RDFFormat
> org.openrdf.rio.RDFHandler
> org.openrdf.rio.RDFHandlerException
> org.openrdf.rio.RDFParseException
> org.openrdf.rio.RDFParser
> org.openrdf.rio.rdfxml.RDFXMLParser
> org.openrdf.rio.rdfxml.RDFXMLWriter
> org.openrdf.rio.turtle.TurtleWriter
> org.openrdf.sail.memory.MemoryStore
> org.openrdf.sail.Sail
> org.openrdf.sail.SailException
> Would it be possible to abstract away any specific RDF APIs to allow Any23 users to chose between, say: Apache Clerezza [1], Apache Jena [2], Sesame [3] and/or others?
> An example of small RDF distiller which does this is java-rdfa [4]. Maybe a similar agnostic (but easy to integrate) approach is possible for Any23. Although, java-rdfa does not need to parse RDF content itself. 
>  [1] http://incubator.apache.org/clerezza/
>  [2] http://incubator.apache.org/jena/
>  [3] http://www.openrdf.org/
>  [4] https://github.com/shellac/java-rdfa

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Updated] (ANY23-19) Abstract away any specific RDF APIs

Posted by "Paolo Castagna (Updated) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/ANY23-19?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Paolo Castagna updated ANY23-19:
--------------------------------

    Description: 
Any23 currently uses Sesame to work with or parse RDF. Specifically Any23 uses these classes from org.openrdf.* packages:

org.openrdf.model.BNode
org.openrdf.model.datatypes.XMLDatatypeUtil
org.openrdf.model.impl.LiteralImpl
org.openrdf.model.impl.URIImpl
org.openrdf.model.impl.ValueFactoryImpl
org.openrdf.model.Literal
org.openrdf.model.Resource
org.openrdf.model.Statement
org.openrdf.model.URI
org.openrdf.model.Value
org.openrdf.model.ValueFactory
org.openrdf.model.vocabulary.OWL
org.openrdf.model.vocabulary.RDF
org.openrdf.model.vocabulary.RDFS
org.openrdf.model.vocabulary.XMLSchema
org.openrdf.repository.RepositoryConnection
org.openrdf.repository.RepositoryException
org.openrdf.repository.RepositoryResult
org.openrdf.repository.sail.SailRepository
org.openrdf.rio.helpers.RDFParserBase
org.openrdf.rio.ntriples.NTriplesParser
org.openrdf.rio.ntriples.NTriplesUtil
org.openrdf.rio.ntriples.NTriplesWriter
org.openrdf.rio.ParseErrorListener
org.openrdf.rio.ParseLocationListener
org.openrdf.rio.RDFFormat
org.openrdf.rio.RDFHandler
org.openrdf.rio.RDFHandlerException
org.openrdf.rio.RDFParseException
org.openrdf.rio.RDFParser
org.openrdf.rio.rdfxml.RDFXMLParser
org.openrdf.rio.rdfxml.RDFXMLWriter
org.openrdf.rio.turtle.TurtleWriter
org.openrdf.sail.memory.MemoryStore
org.openrdf.sail.Sail
org.openrdf.sail.SailException

Would it be possible to abstract away any specific RDF APIs to allow Any23 users to chose between, say: Apache Clerezza [1], Apache Jena [2], Sesame [3] and/or others?

An example of small RDF distiller which does this is java-rdfa [4]. Maybe a similar agnostic (but easy to integrate) approach is possible for Any23. Although, java-rdfa does not need to parse RDF content itself. 

 [1] http://incubator.apache.org/clerezza/
 [2] http://incubator.apache.org/jena/
 [3] http://www.openrdf.org/
 [4] https://github.com/shellac/java-rdfa

  was:
Any23 currently uses Sesame to work with or parse RDF. Specifically Any23 uses these classes from org.openrdf.* packages:

org.openrdf.model.BNode
org.openrdf.model.datatypes.XMLDatatypeUtil
org.openrdf.model.impl.LiteralImpl
org.openrdf.model.impl.URIImpl
org.openrdf.model.impl.ValueFactoryImpl
org.openrdf.model.Literal
org.openrdf.model.Resource
org.openrdf.model.Statement
org.openrdf.model.URI
org.openrdf.model.Value
org.openrdf.model.ValueFactory
org.openrdf.model.vocabulary.OWL
org.openrdf.model.vocabulary.RDF
org.openrdf.model.vocabulary.RDFS
org.openrdf.model.vocabulary.XMLSchema
org.openrdf.repository.RepositoryConnection
org.openrdf.repository.RepositoryException
org.openrdf.repository.RepositoryResult
org.openrdf.repository.sail.SailRepository
org.openrdf.rio.helpers.RDFParserBase
org.openrdf.rio.ntriples.NTriplesParser
org.openrdf.rio.ntriples.NTriplesUtil
org.openrdf.rio.ntriples.NTriplesWriter
org.openrdf.rio.ParseErrorListener
org.openrdf.rio.ParseLocationListener
org.openrdf.rio.RDFFormat
org.openrdf.rio.RDFHandler
org.openrdf.rio.RDFHandlerException
org.openrdf.rio.RDFParseException
org.openrdf.rio.RDFParser
org.openrdf.rio.rdfxml.RDFXMLParser
org.openrdf.rio.rdfxml.RDFXMLWriter
org.openrdf.rio.turtle.TurtleWriter
org.openrdf.sail.memory.MemoryStore
org.openrdf.sail.Sail
org.openrdf.sail.SailException

Would it be possible to abstract away any specific RDF APIs to allow Any23 users to chose between, say: Apache Clerezza, Apache Jena, Sesame and/or others?

    
> Abstract away any specific RDF APIs
> -----------------------------------
>
>                 Key: ANY23-19
>                 URL: https://issues.apache.org/jira/browse/ANY23-19
>             Project: Apache Any23
>          Issue Type: New Feature
>            Reporter: Paolo Castagna
>
> Any23 currently uses Sesame to work with or parse RDF. Specifically Any23 uses these classes from org.openrdf.* packages:
> org.openrdf.model.BNode
> org.openrdf.model.datatypes.XMLDatatypeUtil
> org.openrdf.model.impl.LiteralImpl
> org.openrdf.model.impl.URIImpl
> org.openrdf.model.impl.ValueFactoryImpl
> org.openrdf.model.Literal
> org.openrdf.model.Resource
> org.openrdf.model.Statement
> org.openrdf.model.URI
> org.openrdf.model.Value
> org.openrdf.model.ValueFactory
> org.openrdf.model.vocabulary.OWL
> org.openrdf.model.vocabulary.RDF
> org.openrdf.model.vocabulary.RDFS
> org.openrdf.model.vocabulary.XMLSchema
> org.openrdf.repository.RepositoryConnection
> org.openrdf.repository.RepositoryException
> org.openrdf.repository.RepositoryResult
> org.openrdf.repository.sail.SailRepository
> org.openrdf.rio.helpers.RDFParserBase
> org.openrdf.rio.ntriples.NTriplesParser
> org.openrdf.rio.ntriples.NTriplesUtil
> org.openrdf.rio.ntriples.NTriplesWriter
> org.openrdf.rio.ParseErrorListener
> org.openrdf.rio.ParseLocationListener
> org.openrdf.rio.RDFFormat
> org.openrdf.rio.RDFHandler
> org.openrdf.rio.RDFHandlerException
> org.openrdf.rio.RDFParseException
> org.openrdf.rio.RDFParser
> org.openrdf.rio.rdfxml.RDFXMLParser
> org.openrdf.rio.rdfxml.RDFXMLWriter
> org.openrdf.rio.turtle.TurtleWriter
> org.openrdf.sail.memory.MemoryStore
> org.openrdf.sail.Sail
> org.openrdf.sail.SailException
> Would it be possible to abstract away any specific RDF APIs to allow Any23 users to chose between, say: Apache Clerezza [1], Apache Jena [2], Sesame [3] and/or others?
> An example of small RDF distiller which does this is java-rdfa [4]. Maybe a similar agnostic (but easy to integrate) approach is possible for Any23. Although, java-rdfa does not need to parse RDF content itself. 
>  [1] http://incubator.apache.org/clerezza/
>  [2] http://incubator.apache.org/jena/
>  [3] http://www.openrdf.org/
>  [4] https://github.com/shellac/java-rdfa

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Commented] (ANY23-19) Abstract away any specific RDF APIs

Posted by "Paolo Castagna (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/ANY23-19?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13253204#comment-13253204 ] 

Paolo Castagna commented on ANY23-19:
-------------------------------------

mvn dependency:tree gives a better picture for the current dependencies.

{code}
[INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ any23-core ---
[INFO] org.apache.any23:any23-core:jar:0.7.0-incubating-SNAPSHOT
...
[INFO] +- net.sourceforge.nekohtml:nekohtml:jar:1.9.14:compile
[INFO] |  \- xerces:xercesImpl:jar:2.9.1:compile
[INFO] |     \- xml-apis:xml-apis:jar:1.3.04:compile
...
[INFO] +- org.openrdf.sesame:sesame-model:jar:2.6.1:compile
[INFO] |  \- org.openrdf.sesame:sesame-util:jar:2.6.1:compile
[INFO] +- org.openrdf.sesame:sesame-rio-api:jar:2.6.1:compile
[INFO] +- org.openrdf.sesame:sesame-rio-turtle:jar:2.6.1:compile
[INFO] +- org.openrdf.sesame:sesame-rio-rdfxml:jar:2.6.1:compile
[INFO] +- org.openrdf.sesame:sesame-rio-ntriples:jar:2.6.1:compile
[INFO] +- org.openrdf.sesame:sesame-rio-trix:jar:2.6.1:compile
[INFO] +- org.openrdf.sesame:sesame-repository-sail:jar:2.6.1:compile
[INFO] |  +- org.openrdf.sesame:sesame-sail-api:jar:2.6.1:compile
[INFO] |  +- org.openrdf.sesame:sesame-queryparser-api:jar:2.6.1:compile
[INFO] |  +- org.openrdf.sesame:sesame-queryalgebra-model:jar:2.6.1:compile
[INFO] |  \- org.openrdf.sesame:sesame-query:jar:2.6.1:compile
[INFO] +- org.openrdf.sesame:sesame-sail-memory:jar:2.6.1:compile
[INFO] |  +- org.openrdf.sesame:sesame-sail-inferencer:jar:2.6.1:compile
[INFO] |  |  \- org.openrdf.sesame:sesame-queryparser-serql:jar:2.6.1:runtime
[INFO] |  \- org.openrdf.sesame:sesame-queryalgebra-evaluation:jar:2.6.1:compile
[INFO] |     \- org.openrdf.sesame:sesame-repository-sparql:jar:2.6.1:compile
[INFO] |        +- org.openrdf.sesame:sesame-http-client:jar:2.6.1:compile
[INFO] |        |  +- org.openrdf.sesame:sesame-http-protocol:jar:2.6.1:compile
[INFO] |        |  \- org.openrdf.sesame:sesame-queryresultio-api:jar:2.6.1:compile
[INFO] |        \- org.openrdf.sesame:sesame-queryresultio-sparqlxml:jar:2.6.1:compile
[INFO] +- org.openrdf.sesame:sesame-repository-api:jar:2.6.1:compile
[INFO] +- info.aduna.commons:aduna-commons-xml:jar:2.7.0:compile
[INFO] +- info.aduna.commons:aduna-commons-text:jar:2.7.0:compile
[INFO] +- info.aduna.commons:aduna-commons-net:jar:2.7.0:compile
[INFO] +- info.aduna.commons:aduna-commons-lang:jar:2.9.0:compile
[INFO] +- info.aduna.commons:aduna-commons-iteration:jar:2.10.0:compile
[INFO] +- info.aduna.commons:aduna-commons-io:jar:2.10.0:compile
[INFO] +- info.aduna.commons:aduna-commons-concurrent:jar:2.7.0:compile
...
{code}

Note that xerces:xercesImpl is already included transitively via NekoHTML.

In any case, I changed this issue to a "Wish" and decreased its priority to Minor.
Developers can implement the [TripleHandler|http://incubator.apache.org/any23/xref/org/apache/any23/writer/TripleHandler.html] interface and store the RDF produced by Any23 where they need to.

                
> Abstract away any specific RDF APIs
> -----------------------------------
>
>                 Key: ANY23-19
>                 URL: https://issues.apache.org/jira/browse/ANY23-19
>             Project: Apache Any23
>          Issue Type: Wish
>    Affects Versions: 0.7.0
>            Reporter: Paolo Castagna
>            Priority: Minor
>             Fix For: 0.8.0
>
>
> Any23 currently uses Sesame to work with or parse RDF. Specifically Any23 uses these classes from org.openrdf.* packages:
> org.openrdf.model.BNode
> org.openrdf.model.datatypes.XMLDatatypeUtil
> org.openrdf.model.impl.LiteralImpl
> org.openrdf.model.impl.URIImpl
> org.openrdf.model.impl.ValueFactoryImpl
> org.openrdf.model.Literal
> org.openrdf.model.Resource
> org.openrdf.model.Statement
> org.openrdf.model.URI
> org.openrdf.model.Value
> org.openrdf.model.ValueFactory
> org.openrdf.model.vocabulary.OWL
> org.openrdf.model.vocabulary.RDF
> org.openrdf.model.vocabulary.RDFS
> org.openrdf.model.vocabulary.XMLSchema
> org.openrdf.repository.RepositoryConnection
> org.openrdf.repository.RepositoryException
> org.openrdf.repository.RepositoryResult
> org.openrdf.repository.sail.SailRepository
> org.openrdf.rio.helpers.RDFParserBase
> org.openrdf.rio.ntriples.NTriplesParser
> org.openrdf.rio.ntriples.NTriplesUtil
> org.openrdf.rio.ntriples.NTriplesWriter
> org.openrdf.rio.ParseErrorListener
> org.openrdf.rio.ParseLocationListener
> org.openrdf.rio.RDFFormat
> org.openrdf.rio.RDFHandler
> org.openrdf.rio.RDFHandlerException
> org.openrdf.rio.RDFParseException
> org.openrdf.rio.RDFParser
> org.openrdf.rio.rdfxml.RDFXMLParser
> org.openrdf.rio.rdfxml.RDFXMLWriter
> org.openrdf.rio.turtle.TurtleWriter
> org.openrdf.sail.memory.MemoryStore
> org.openrdf.sail.Sail
> org.openrdf.sail.SailException
> Would it be possible to abstract away any specific RDF APIs to allow Any23 users to chose between, say: Apache Clerezza [1], Apache Jena [2], Sesame [3] and/or others?
> An example of small RDF distiller which does this is java-rdfa [4]. Maybe a similar agnostic (but easy to integrate) approach is possible for Any23. Although, java-rdfa does not need to parse RDF content itself. 
>  [1] http://incubator.apache.org/clerezza/
>  [2] http://incubator.apache.org/jena/
>  [3] http://www.openrdf.org/
>  [4] https://github.com/shellac/java-rdfa

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Commented] (ANY23-19) Abstract away any specific RDF APIs

Posted by "Paolo Castagna (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/ANY23-19?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13179845#comment-13179845 ] 

Paolo Castagna commented on ANY23-19:
-------------------------------------

> how did you get on wrt moving away from the packages you've highlighted above

I didn't, I created this issue as "new feature" when I looked at the Any23 dependencies but at the time the Any23 sources were not in the Apache SVN repository.
I am not sure when I will have time to work on this and, right now, I am not even sure if it is going to be a quick and small thing or not.

> also with progressing with more collaboration between ASF RDF-type projects?

Well, this discussion should probably be on some *-dev mailing list. 
While ago, I sent out an email but there has not been much discussion so I assume is either too early or there is no much interest or people are too busy elsewhere.
                
> Abstract away any specific RDF APIs
> -----------------------------------
>
>                 Key: ANY23-19
>                 URL: https://issues.apache.org/jira/browse/ANY23-19
>             Project: Apache Any23
>          Issue Type: New Feature
>            Reporter: Paolo Castagna
>
> Any23 currently uses Sesame to work with or parse RDF. Specifically Any23 uses these classes from org.openrdf.* packages:
> org.openrdf.model.BNode
> org.openrdf.model.datatypes.XMLDatatypeUtil
> org.openrdf.model.impl.LiteralImpl
> org.openrdf.model.impl.URIImpl
> org.openrdf.model.impl.ValueFactoryImpl
> org.openrdf.model.Literal
> org.openrdf.model.Resource
> org.openrdf.model.Statement
> org.openrdf.model.URI
> org.openrdf.model.Value
> org.openrdf.model.ValueFactory
> org.openrdf.model.vocabulary.OWL
> org.openrdf.model.vocabulary.RDF
> org.openrdf.model.vocabulary.RDFS
> org.openrdf.model.vocabulary.XMLSchema
> org.openrdf.repository.RepositoryConnection
> org.openrdf.repository.RepositoryException
> org.openrdf.repository.RepositoryResult
> org.openrdf.repository.sail.SailRepository
> org.openrdf.rio.helpers.RDFParserBase
> org.openrdf.rio.ntriples.NTriplesParser
> org.openrdf.rio.ntriples.NTriplesUtil
> org.openrdf.rio.ntriples.NTriplesWriter
> org.openrdf.rio.ParseErrorListener
> org.openrdf.rio.ParseLocationListener
> org.openrdf.rio.RDFFormat
> org.openrdf.rio.RDFHandler
> org.openrdf.rio.RDFHandlerException
> org.openrdf.rio.RDFParseException
> org.openrdf.rio.RDFParser
> org.openrdf.rio.rdfxml.RDFXMLParser
> org.openrdf.rio.rdfxml.RDFXMLWriter
> org.openrdf.rio.turtle.TurtleWriter
> org.openrdf.sail.memory.MemoryStore
> org.openrdf.sail.Sail
> org.openrdf.sail.SailException
> Would it be possible to abstract away any specific RDF APIs to allow Any23 users to chose between, say: Apache Clerezza [1], Apache Jena [2], Sesame [3] and/or others?
> An example of small RDF distiller which does this is java-rdfa [4]. Maybe a similar agnostic (but easy to integrate) approach is possible for Any23. Although, java-rdfa does not need to parse RDF content itself. 
>  [1] http://incubator.apache.org/clerezza/
>  [2] http://incubator.apache.org/jena/
>  [3] http://www.openrdf.org/
>  [4] https://github.com/shellac/java-rdfa

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Commented] (ANY23-19) Abstract away any specific RDF APIs

Posted by "Peter Ansell (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/ANY23-19?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13253175#comment-13253175 ] 

Peter Ansell commented on ANY23-19:
-----------------------------------

Hi Paolo,

The example library that is continually being referred to here, java-rdfa, abstracts away from clerezza, sesame and jena interfaces by representing everything as strings. See https://github.com/shellac/java-rdfa/blob/master/core/src/main/java/net/rootdev/javardfa/StatementSink.java The java-rdfa library is also not being developed or used actively, so it isn't the best example of a successful library that doesn't use a type-safe RDF Statement/Value API. I worked on java-rdfa a little but there is no push behind it. Even its author refers to it as "The cruftiest RDFa parser in the world"

Two of the three goals of Any23, command line utility, and web service, are completely ambivalent to the technology being used internally, as long as it is high quality, and the Sesame libraries are very high quality in my opinion and experience. The only goal that would be affected would be the use of Any23 as a library. How often is Any23 currently being used as a library? Could another project easily implement the same functionality using Jena with less effort than it would take to either create a custom string based solution, or move to another framework that may have just as many or more dependencies?

In terms of the use of Any23 as a library, is there anything about the Sesame Model hierarchy (Value/Resource/Literal/BNode/URI) that would be better represented using a custom solution? As one example, I have been working with OWLAPI recently and its RDF handling is shocking, it merges URIs with Blank Nodes to form what it refers to as IRIs. It has a custom internal solution that only recognises two types of triples, those with an IRI in the object position (where IRI is not type-safely defined between URI and BlankNode) and those with Literals in the object position. I can't imagine Any23 going down this route, but it is the worst case scenario if the API is converted without a reason. In the simplest scenario, it may be possible to reuse the Sesame Model hierarchy to produce Values that work across all three libraries, using custom ValueImpl etc., implementations that actually implement the relevant interfaces from other libraries, along a custom ValueFactory to produce these multi-library-compatible Values (custom ValueFactories can be plugged into any Rio Parser using Rio.getParser(RDFFormat, ValueFactory), a functionality which I haven't seen in other libraries).

In terms of the actual packages that are currently used, there are four basic packages sesame-model, sesame-rio-api, sesame-repository-api, sesame-sail-api, sesame-sail-memory. These base libraries are small dependencies. One other dependency is some small utilities, sesame-util that are used by sesame-model and other sesame libraries.

82K - sesame-model-2.6.5.jar
36K - sesame-repository-api-2.6.5.jar
22K - sesame-rio-api-2.6.5.jar
56K - sesame-sail-api-2.6.5.jar
54K - sesame-sail-memory-2.6.5.jar
53K - sesame-util-2.6.5.jar

The value Impl classes should not be directly referenced. They should be accessed using a ValueFactory and used as their Interfaces. This doesn't change any of the libraries that are used, but it is better practice.

The other libraries that pull in the Rio parsers can be linked in dynamically without compiling in the dependency, so the use of Any23 as a library would enable people to pull them in as needed. See Rio.getParser(RDFFormat, ValueFactory) and Rio.getWriter(RDFFormat) methods. It would be valuable if Any23 could dynamically pull in all of its parsers and writers using the Rio.* static methods. Then it could be used with the absolute minimum number of parsers and writers for the current user. 

4.6K - sesame-rio-n3-2.6.5.jar
14K - sesame-rio-ntriples-2.6.5.jar
33K - sesame-rio-rdfxml-2.6.5.jar
17K - sesame-rio-turtle-2.6.5.jar

Switching to another library may cause the bloat that you say you do not want.

For example, Jena and its immediate dependencies is quite large compared to the modular sesame jar files, and that doesn't include the SPARQL parsing libraries from ARQ, as indeed the sesame libraries quote above do not include the sparql libraries.

1.7M - jena-core-2.7.0-incubating.jar
151K - jena-iri-0.9.0-incubating.jar
3.1M - icu4j-3.4.4.jar
1.4M - xercesImpl-2.10.0.jar

                
> Abstract away any specific RDF APIs
> -----------------------------------
>
>                 Key: ANY23-19
>                 URL: https://issues.apache.org/jira/browse/ANY23-19
>             Project: Apache Any23
>          Issue Type: New Feature
>    Affects Versions: 0.7.0
>            Reporter: Paolo Castagna
>             Fix For: 0.8.0
>
>
> Any23 currently uses Sesame to work with or parse RDF. Specifically Any23 uses these classes from org.openrdf.* packages:
> org.openrdf.model.BNode
> org.openrdf.model.datatypes.XMLDatatypeUtil
> org.openrdf.model.impl.LiteralImpl
> org.openrdf.model.impl.URIImpl
> org.openrdf.model.impl.ValueFactoryImpl
> org.openrdf.model.Literal
> org.openrdf.model.Resource
> org.openrdf.model.Statement
> org.openrdf.model.URI
> org.openrdf.model.Value
> org.openrdf.model.ValueFactory
> org.openrdf.model.vocabulary.OWL
> org.openrdf.model.vocabulary.RDF
> org.openrdf.model.vocabulary.RDFS
> org.openrdf.model.vocabulary.XMLSchema
> org.openrdf.repository.RepositoryConnection
> org.openrdf.repository.RepositoryException
> org.openrdf.repository.RepositoryResult
> org.openrdf.repository.sail.SailRepository
> org.openrdf.rio.helpers.RDFParserBase
> org.openrdf.rio.ntriples.NTriplesParser
> org.openrdf.rio.ntriples.NTriplesUtil
> org.openrdf.rio.ntriples.NTriplesWriter
> org.openrdf.rio.ParseErrorListener
> org.openrdf.rio.ParseLocationListener
> org.openrdf.rio.RDFFormat
> org.openrdf.rio.RDFHandler
> org.openrdf.rio.RDFHandlerException
> org.openrdf.rio.RDFParseException
> org.openrdf.rio.RDFParser
> org.openrdf.rio.rdfxml.RDFXMLParser
> org.openrdf.rio.rdfxml.RDFXMLWriter
> org.openrdf.rio.turtle.TurtleWriter
> org.openrdf.sail.memory.MemoryStore
> org.openrdf.sail.Sail
> org.openrdf.sail.SailException
> Would it be possible to abstract away any specific RDF APIs to allow Any23 users to chose between, say: Apache Clerezza [1], Apache Jena [2], Sesame [3] and/or others?
> An example of small RDF distiller which does this is java-rdfa [4]. Maybe a similar agnostic (but easy to integrate) approach is possible for Any23. Although, java-rdfa does not need to parse RDF content itself. 
>  [1] http://incubator.apache.org/clerezza/
>  [2] http://incubator.apache.org/jena/
>  [3] http://www.openrdf.org/
>  [4] https://github.com/shellac/java-rdfa

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

[jira] [Commented] (ANY23-19) Abstract away any specific RDF APIs

Posted by "Paolo Castagna (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/ANY23-19?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13253188#comment-13253188 ] 

Paolo Castagna commented on ANY23-19:
-------------------------------------

Hi Peter, thanks for your comments (which I truly appreciate).

bq. ... representing everything as strings

As I said, java-rdfa do not provide any data checking/validation. Does Any23 currently guarantee that all the RDF triples generated are "valid" (checking syntax of URIs/IRIs, literals, etc.)? If it does, using strings would not certainly be an improvement, I agree. If it does not, then using an RDF library vs. plain strings does not provide a big advantage.

bq. How often is Any23 currently being used as a library? 

I do not know the answer to this question, to me Any23 is valuable as a library (in particular if it can be used with projects such as Apache Nutch and Hadoop/MapReduce).
You should also ask "how often Any23 could be used as a library?", I don't know the answer to this either.

bq. They should be accessed using a ValueFactory and used as their Interfaces. This doesn't change any of the libraries that are used, but it is better practice. 

Moving the creation of Sesame specific objects to a single place in Any23 is a good idea.

bq. Switching to another library may cause the bloat that you say you do not want. 

Exactly, I did not propose that, certainly not at this point in time.

bq. Jena and its immediate dependencies is quite large compared to the modular sesame jar files

I know (and I always said it in the past). Things might change in future and indeed I think that for a project such as Jena a small as possible jena-core.jar with no inference, ontology support, not even RDF/XML parsing... just a low level RDF graph API, would be good.
                
> Abstract away any specific RDF APIs
> -----------------------------------
>
>                 Key: ANY23-19
>                 URL: https://issues.apache.org/jira/browse/ANY23-19
>             Project: Apache Any23
>          Issue Type: New Feature
>    Affects Versions: 0.7.0
>            Reporter: Paolo Castagna
>             Fix For: 0.8.0
>
>
> Any23 currently uses Sesame to work with or parse RDF. Specifically Any23 uses these classes from org.openrdf.* packages:
> org.openrdf.model.BNode
> org.openrdf.model.datatypes.XMLDatatypeUtil
> org.openrdf.model.impl.LiteralImpl
> org.openrdf.model.impl.URIImpl
> org.openrdf.model.impl.ValueFactoryImpl
> org.openrdf.model.Literal
> org.openrdf.model.Resource
> org.openrdf.model.Statement
> org.openrdf.model.URI
> org.openrdf.model.Value
> org.openrdf.model.ValueFactory
> org.openrdf.model.vocabulary.OWL
> org.openrdf.model.vocabulary.RDF
> org.openrdf.model.vocabulary.RDFS
> org.openrdf.model.vocabulary.XMLSchema
> org.openrdf.repository.RepositoryConnection
> org.openrdf.repository.RepositoryException
> org.openrdf.repository.RepositoryResult
> org.openrdf.repository.sail.SailRepository
> org.openrdf.rio.helpers.RDFParserBase
> org.openrdf.rio.ntriples.NTriplesParser
> org.openrdf.rio.ntriples.NTriplesUtil
> org.openrdf.rio.ntriples.NTriplesWriter
> org.openrdf.rio.ParseErrorListener
> org.openrdf.rio.ParseLocationListener
> org.openrdf.rio.RDFFormat
> org.openrdf.rio.RDFHandler
> org.openrdf.rio.RDFHandlerException
> org.openrdf.rio.RDFParseException
> org.openrdf.rio.RDFParser
> org.openrdf.rio.rdfxml.RDFXMLParser
> org.openrdf.rio.rdfxml.RDFXMLWriter
> org.openrdf.rio.turtle.TurtleWriter
> org.openrdf.sail.memory.MemoryStore
> org.openrdf.sail.Sail
> org.openrdf.sail.SailException
> Would it be possible to abstract away any specific RDF APIs to allow Any23 users to chose between, say: Apache Clerezza [1], Apache Jena [2], Sesame [3] and/or others?
> An example of small RDF distiller which does this is java-rdfa [4]. Maybe a similar agnostic (but easy to integrate) approach is possible for Any23. Although, java-rdfa does not need to parse RDF content itself. 
>  [1] http://incubator.apache.org/clerezza/
>  [2] http://incubator.apache.org/jena/
>  [3] http://www.openrdf.org/
>  [4] https://github.com/shellac/java-rdfa

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Updated] (ANY23-19) Abstract away any specific RDF APIs

Posted by "Lewis John McGibbney (Updated) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/ANY23-19?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Lewis John McGibbney updated ANY23-19:
--------------------------------------

    Affects Version/s: 0.7.0
        Fix Version/s: 0.8.0
    
> Abstract away any specific RDF APIs
> -----------------------------------
>
>                 Key: ANY23-19
>                 URL: https://issues.apache.org/jira/browse/ANY23-19
>             Project: Apache Any23
>          Issue Type: New Feature
>    Affects Versions: 0.7.0
>            Reporter: Paolo Castagna
>             Fix For: 0.8.0
>
>
> Any23 currently uses Sesame to work with or parse RDF. Specifically Any23 uses these classes from org.openrdf.* packages:
> org.openrdf.model.BNode
> org.openrdf.model.datatypes.XMLDatatypeUtil
> org.openrdf.model.impl.LiteralImpl
> org.openrdf.model.impl.URIImpl
> org.openrdf.model.impl.ValueFactoryImpl
> org.openrdf.model.Literal
> org.openrdf.model.Resource
> org.openrdf.model.Statement
> org.openrdf.model.URI
> org.openrdf.model.Value
> org.openrdf.model.ValueFactory
> org.openrdf.model.vocabulary.OWL
> org.openrdf.model.vocabulary.RDF
> org.openrdf.model.vocabulary.RDFS
> org.openrdf.model.vocabulary.XMLSchema
> org.openrdf.repository.RepositoryConnection
> org.openrdf.repository.RepositoryException
> org.openrdf.repository.RepositoryResult
> org.openrdf.repository.sail.SailRepository
> org.openrdf.rio.helpers.RDFParserBase
> org.openrdf.rio.ntriples.NTriplesParser
> org.openrdf.rio.ntriples.NTriplesUtil
> org.openrdf.rio.ntriples.NTriplesWriter
> org.openrdf.rio.ParseErrorListener
> org.openrdf.rio.ParseLocationListener
> org.openrdf.rio.RDFFormat
> org.openrdf.rio.RDFHandler
> org.openrdf.rio.RDFHandlerException
> org.openrdf.rio.RDFParseException
> org.openrdf.rio.RDFParser
> org.openrdf.rio.rdfxml.RDFXMLParser
> org.openrdf.rio.rdfxml.RDFXMLWriter
> org.openrdf.rio.turtle.TurtleWriter
> org.openrdf.sail.memory.MemoryStore
> org.openrdf.sail.Sail
> org.openrdf.sail.SailException
> Would it be possible to abstract away any specific RDF APIs to allow Any23 users to chose between, say: Apache Clerezza [1], Apache Jena [2], Sesame [3] and/or others?
> An example of small RDF distiller which does this is java-rdfa [4]. Maybe a similar agnostic (but easy to integrate) approach is possible for Any23. Although, java-rdfa does not need to parse RDF content itself. 
>  [1] http://incubator.apache.org/clerezza/
>  [2] http://incubator.apache.org/jena/
>  [3] http://www.openrdf.org/
>  [4] https://github.com/shellac/java-rdfa

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira