Class SparqlStoreImpl

  • All Implemented Interfaces:
    Store

    public class SparqlStoreImpl
    extends Object
    implements Store
    Store interface implementation that interacts with any SPARQL-based triplestore through a Query and Update endpoints.
    Since:
    0.14.0
    Version:
    $version-stub$
    Author:
    Andrew Berezovskyi (andriib@kth.se)
    • Field Detail

      • TRIPLE_LIMIT

        public static final int TRIPLE_LIMIT
        Could be used to prevent extremely large results
        See Also:
        Constant Field Values
    • Constructor Detail

      • SparqlStoreImpl

        public SparqlStoreImpl​(String queryEndpoint,
                               String updateEndpoint)
        Initialises the Store with the endpoints for query and update. Must be available over HTTP or HTTPS (TLS & cipher support depends on the JDK version) without authentication.
        Parameters:
        queryEndpoint - SPARQL QUERY endpoint
        updateEndpoint - SPARQL UPDATE endpoint
      • SparqlStoreImpl

        public SparqlStoreImpl​(String queryEndpoint,
                               String updateEndpoint,
                               String username,
                               String password)
        Initialises the Store with the endpoints for query and update. Must be available over HTTP or HTTPS (TLS & cipher support depends on the JDK version) with authentication via username and password combinations. Authentication works with the basic and digest HTTP authentication schemes.
        Parameters:
        queryEndpoint - SPARQL QUERY endpoint
        updateEndpoint - SPARQL UPDATE endpoint
        username - Username
        password - Password
    • Method Detail

      • insertJenaModel

        public void insertJenaModel​(URI namedGraph,
                                    org.apache.jena.rdf.model.Model model)
        Description copied from interface: Store
        Insert a jena model into the named graph with corresponding URI.
        Specified by:
        insertJenaModel in interface Store
      • insertResources

        public boolean insertResources​(URI namedGraph,
                                       Object... resources)
                                throws StoreAccessException
        Description copied from interface: Store
        Insert Jena models representations of OSLC IResource instances into the named graph. existing statements already present in the named graph are not overridden, nor removed.
        Specified by:
        insertResources in interface Store
        Throws:
        StoreAccessException
      • deleteResources

        public void deleteResources​(URI namedGraphUri,
                                    URI... subjectUris)
        Description copied from interface: Store
        Delete all statements whose subject is one of nodeUris
        Specified by:
        deleteResources in interface Store
      • deleteResources

        public void deleteResources​(URI namedGraphUri,
                                    IResource... resources)
        Description copied from interface: Store
        Delete all statements whose subject is one of the resources's URis.
        Specified by:
        deleteResources in interface Store
      • namedGraphExists

        public boolean namedGraphExists​(URI namedGraphUri)
        Description copied from interface: Store
        Checks if the triplestore has the named graph under the corresponding URI.
        Specified by:
        namedGraphExists in interface Store
        Parameters:
        namedGraphUri - URI of a named graph that shall be a valid URI and was used before with the put* methods.
        Returns:
        does the triplestore contain any resources for a given named graph
      • resourceExists

        public boolean resourceExists​(URI namedGraphUri,
                                      URI resourceUri)
        Description copied from interface: Store
        Checks if a resource with resourceUri exists under the corresponding named graph.
        Specified by:
        resourceExists in interface Store
      • getResources

        public <T extends IResource> List<T> getResources​(URI namedGraph,
                                                          Class<T> clazz)
                                                   throws StoreAccessException,
                                                          ModelUnmarshallingException
        Description copied from interface: Store
        Retrieve the collection of IResource instances specified by the concrete type, unmarshaled from the RDF graph persisted in the triplestore under the given named graph. The named graph must represent a URI that was previously given to another method call or a Resource about URI if the resource was saved alone.
        Specified by:
        getResources in interface Store
        clazz - Concrete type of the stored resources. Must be correct (correspond to the marshaled type and be a subclass of IResource), otherwise the instantiation from model will not succeed.
        Returns:
        A collection of IResource instances, unmarshaled from the RDF graph persisted in the triplestore.
        Throws:
        StoreAccessException - if there was a problem with the triplestore (or the dataset, more broadly).
        ModelUnmarshallingException - if the classes cannot be instantiated or another error occurred when working with Jena model.
      • getResources

        public <T extends IResource> List<T> getResources​(URI namedGraph,
                                                          Class<T> clazz,
                                                          String prefixes,
                                                          String where,
                                                          String searchTerms,
                                                          int limit,
                                                          int offset)
                                                   throws StoreAccessException,
                                                          ModelUnmarshallingException
        Description copied from interface: Store
        Alternative to Store.getResources(URI, Class) with paging on the OSLC resource level.
        Specified by:
        getResources in interface Store
        Parameters:
        namedGraph - URI of a named graph under which resources were stored
        clazz - class of the resources being retrieved
        prefixes - defines the prefixes for prefixed names that appear in the oslc.where query parameter.
        where - filters the member list, keeping only those member resources that satisfy the boolean test on the member resource properties. (See oslc.where at https://tools.oasis-open.org/version-control/browse/wsvn/oslc-core/trunk/specs/oslc-query.html)
        searchTerms - score each member resource using a full text search on it text-valued properties. (See oslc.searchTerms at https://tools.oasis-open.org/version-control/browse/wsvn/oslc-core/trunk/specs/oslc-query.html)
        limit - paging limit
        offset - paging offset
        Returns:
        list of OSLC resources, size is less or equal to 'limit'
        Throws:
        StoreAccessException - if there was a problem with the triplestore (or the dataset, more broadly).
        ModelUnmarshallingException - if the classes cannot be instantiated or another error occurred when working with Jena model.
      • getResources

        public <T extends IResource> List<T> getResources​(URI namedGraph,
                                                          Class<T> clazz,
                                                          String prefixes,
                                                          String where,
                                                          String searchTerms,
                                                          int limit,
                                                          int offset,
                                                          List<String> additionalDistinctVars,
                                                          org.apache.jena.arq.querybuilder.SelectBuilder additionalQueryFilter)
                                                   throws StoreAccessException,
                                                          ModelUnmarshallingException
        Description copied from interface: Store
        Alternative to Store.getResources(URI, Class, String, String, String, int, int) with additional paramters for inlined resources. These paramters extend the default query from DESCRIBE ?s WHERE { ... SELECT distinct ?s WHERE { ?s ?p ?o . ?s rdf:type . ... } } to DESCRIBE ?s ?a ?b WHERE { ... SELECT distinct ?s ?a ?b WHERE { ?s ?p ?o . ?s rdf:type . ?s ?a . ?a ?b } } hence allowing ?a and ?b to be described, as well as ?a Corresponding paramters to acheive this: List additionalDistinctVars = new ArrayList(); additionalDistinctVars.add("a"); additionalDistinctVars.add("b"); SelectBuilder additionalQueryFilter = new SelectBuilder(); additionalQueryFilter .addWhere( "?s", new ResourceImpl("http://...#" + "prp1"), "?a") .addWhere( "?a", new ResourceImpl(http://...# + "prp2"), "?b");
        Specified by:
        getResources in interface Store
        Throws:
        StoreAccessException
        ModelUnmarshallingException
      • getResources

        public org.apache.jena.rdf.model.Model getResources​(URI namedGraph,
                                                            String prefixes,
                                                            String where,
                                                            int limit,
                                                            int offset)
        Description copied from interface: Store
        Retrieve a Jena model that satisfies the given where parameter as defined in the OSLC Query language (https://tools.oasis-open.org/version-control/svn/oslc-core/trunk/specs/oslc-query.html) If the namedGraph is null, the query is applied on all namedGraph in the triplestore. The method currently only provides support for terms of type Comparisons, where the operator is 'EQUALS', and the operand is either a String or a URI.
        Specified by:
        getResources in interface Store
        Parameters:
        namedGraph - namedGraphUri URI of a named graph under which resources were stored
        prefixes - defines the prefixes for prefixed names that appear in the oslc.where query parameter.
        where - filters the member list, keeping only those member resources that satisfy the boolean test on the member resource properties. (See oslc.where at https://tools.oasis-open.org/version-control/browse/wsvn/oslc-core/trunk/specs/oslc-query.html)
        limit - paging limit
        offset - paging offset
        Returns:
        list of resources, size is less or equal to 'limit'
      • getResources

        public org.apache.jena.rdf.model.Model getResources​(URI namedGraph,
                                                            String prefixes,
                                                            String where,
                                                            String searchTerms,
                                                            int limit,
                                                            int offset)
        Description copied from interface: Store
        Retrieve a Jena model that satisfies the given where parameter as defined in the OSLC Query language (https://tools.oasis-open.org/version-control/svn/oslc-core/trunk/specs/oslc-query.html) If the namedGraph is null, the query is applied on all namedGraph in the triplestore. The method currently only provides support for terms of type Comparisons, where the operator is 'EQUALS', and the operand is either a String or a URI.
        Specified by:
        getResources in interface Store
        Parameters:
        namedGraph - namedGraphUri URI of a named graph under which resources were stored
        prefixes - defines the prefixes for prefixed names that appear in the oslc.where query parameter.
        where - filters the member list, keeping only those member resources that satisfy the boolean test on the member resource properties. (See oslc.where at https://tools.oasis-open.org/version-control/browse/wsvn/oslc-core/trunk/specs/oslc-query.html)
        searchTerms - score each member resource using a full text search on it text-valued properties. (See oslc.searchTerms at https://tools.oasis-open.org/version-control/browse/wsvn/oslc-core/trunk/specs/oslc-query.html)
        limit - paging limit
        offset - paging offset
        Returns:
        list of resources, size is less or equal to 'limit'
      • getResources

        public org.apache.jena.rdf.model.Model getResources​(URI namedGraph,
                                                            String prefixes,
                                                            String where,
                                                            String searchTerms,
                                                            int limit,
                                                            int offset,
                                                            List<String> additionalDistinctVars,
                                                            org.apache.jena.arq.querybuilder.SelectBuilder additionalQueryFilter)
        Description copied from interface: Store
        Alternative to Store.getResources(URI, String, String, String, int, int) with additional paramters for inlined resources. See Store#getResources(URI, Class, String, String, String, int, int, List, SelectBuilder) for an explanation of these additional paramters.
        Specified by:
        getResources in interface Store
      • getResource

        public <T extends IResource> T getResource​(URI namedGraphUri,
                                                   URI resourceUri,
                                                   Class<T> clazz)
                                            throws NoSuchElementException,
                                                   StoreAccessException,
                                                   ModelUnmarshallingException
        Description copied from interface: Store
        Retrieve a single IResource instance specified by the concrete type, unmarshaled from the RDF graph persisted in the triplestore under the given named graph. namedGraph must represent a URI that was previously given to another call.
        Specified by:
        getResource in interface Store
        Parameters:
        namedGraphUri - URI of a named graph under which resources were stored
        clazz - Java class of the stored resources.
        Returns:
        An IResource instance, unmarshaled from the RDF graph persisted in the triplestore.
        Throws:
        NoSuchElementException - if the resource is not present under a given named graph URI or if the named graph itself contains no resources (effectively missing).
        StoreAccessException - if there was a problem with the triplestore (or the dataset, more broadly).
        ModelUnmarshallingException - if the classes cannot be instantiated or another error occurred when working with Jena model.
      • updateResources

        public <T extends IResource> boolean updateResources​(URI namedGraphUri,
                                                             T... resources)
                                                      throws StoreAccessException
        Description copied from interface: Store
        Insert Jena models representations of OSLC IResource instances into the named graph. Any existing model representations of these instances are overridden. other existing statements in the named graph are not overridden, nor removed.
        Specified by:
        updateResources in interface Store
        Throws:
        StoreAccessException
      • putResources

        public <T extends IResource> boolean putResources​(URI uri,
                                                          Collection<T> resources)
                                                   throws StoreAccessException
        Description copied from interface: Store
        Inserts OSLC IResource instances into the triplestore in the designed namedGraph.

        Any previously stored resource(s) and/or statements will be overwritten.

        Specified by:
        putResources in interface Store
        Parameters:
        uri - A unique URI that is used as a named graph to which resources are appended
        resources - A collection of IResource instances
        Returns:
        Operation success
        Throws:
        StoreAccessException - if the operation can't be performed
      • appendResources

        public <T extends IResource> boolean appendResources​(URI namedGraph,
                                                             Collection<T> resources)
                                                      throws StoreAccessException
        Description copied from interface: Store
        Adds OSLC IResource instances in addition to other instances already present on this named graph into the triplestore. Jena models representing existing and added resource arrays will be combined.
        Specified by:
        appendResources in interface Store
        Parameters:
        namedGraph - A unique URI that is used as a named graph to which resources are appended
        resources - A collection of IResource instances
        Returns:
        Operation success
        Throws:
        StoreAccessException - if the operation can't be performed
      • clear

        public void clear​(URI namedGraph)
        Description copied from interface: Store
        Deletes the resources and statements stored under the given named graph from the triplestore.

        May delete the containing named graph, many triplestores will delete the named graph automatically as well as soon as it doesn't contain any triples.

        Specified by:
        clear in interface Store
      • keySet

        public Set<String> keySet()
        Description copied from interface: Store
        Enumerates all named graph URIs within the dataset.

        If the dataset was not manipulated by other means than via this interface, it can be assumed that all URIs in the set are valid keys.

        Specified by:
        keySet in interface Store
        Returns:
        The set of all named graph URIs, may contain URIs that are not valid keys if the dataset was manipulated directly.
      • removeAll

        public void removeAll()
        Description copied from interface: Store
        Remove EVERYTHING from the triplestore.
        Specified by:
        removeAll in interface Store
      • close

        public void close()
        Description copied from interface: Store
        Close connection
        Specified by:
        close in interface Store