AGFederationBasics.java

package com.franz.ag.examples;

import com.franz.ag.*;

public class AGFederationBasics {

    /**
     * Demonstrates some basics of federating triple stores.
     * 
     * @param args unused
     * @throws AllegroGraphException
     */
    public static void main(String[] args) throws AllegroGraphException {
        
        // Connect to the default server, which must already be running.
        AllegroGraphConnection ags = new AllegroGraphConnection();
        try {
            ags.enable();
        } catch (Exception e) {
            throw new AllegroGraphException("Server connection problem.", e);
        }

        // Create triple stores for this example
        AllegroGraph ts1 = ags.renew("store1", AGPaths.TRIPLE_STORES);
        AllegroGraph ts2 = ags.renew("store2", AGPaths.TRIPLE_STORES);
        
        // Create a federated store consisting of the first 2 open stores above 
        AllegroGraph[] parts = {ts1,ts2};
        AllegroGraph fed = ags.federate("federation", parts, true);
        
        // Show stores in the federation 
        AllegroGraph[] stores = fed.getStores();
        AGUtils.printObjectArray("federation stores:", stores);

        // Register namespaces
        ts1.registerNamespace("ex", "http://example.org/");
        ts2.registerNamespace("ex", "http://example.org/");
        //fed.registerNamespace("ex", "http://example.org/");
        
        // Add some triples to the default graph of each store
        ts1.addStatement("!ex:A", "!rdfs:subClassOf", "!ex:B");
        ts2.addStatement("!ex:B", "!rdfs:subClassOf", "!ex:C");
        
        // You cannot add triples to a federation this way,
        // you must add directly to one of its leaf stores
        //fed.addStatement("!ex:a", "!rdf:type", "!ex:A");
        
        // Show all triples in the default graph of store 1.
        Cursor cc = ts1.getStatements(null, null, null);
        System.out.println("Showing all triples in the default graph of store1:");
        AGUtils.showTriplesWithGraph(cc);
        
        // Show all triples in the default graph of store 2.
        cc = ts2.getStatements(null, null, null);
        System.out.println("Showing all triples in the default graph of store2:");
        AGUtils.showTriplesWithGraph(cc);
        
        // Show all triples in the default graph of the federation.
        // Note that the federation's default graph is empty, and
        // is distinct from the default graph of each leaf store
        cc = fed.getStatements(null, null, null);
        System.out.println("Retrieving all triples in the default graph of the federated store (should be empty):");
        AGUtils.showTriplesWithGraph(cc);
        
        // Retrieve all triples in the federation.
        // Note that we're using a wildcard on the graph argument.
        cc = fed.getStatements(null, null, null, null);
        System.out.println("Retrieving all triples in the federated store:");
        AGUtils.showTriplesWithGraph(cc);
        
        // Show all triples inferred from the federation.
        cc = fed.getStatements(true, null, null, null, null);
        System.out.println("Showing all triples inferred from the federated store:");
        AGUtils.showTriplesWithGraph(cc);
        
        // Close all stores and disconnect from the server
        fed.closeTripleStore();
        ts1.closeTripleStore();
        ts2.closeTripleStore();
        ags.disable();
    }
    
}

Up | Next