CodeFerret icon

Jena Ontology Loading Tests

CodeFerret | PRO | 04/22/20 08:50:47 PM UTC | 0 ⭐ | 972 👁️ | Never ⏰ | []
Java |

3.55 KB

|

None

|

0 👍

/

0 👎

import java.io.FileWriter;
 
import org.apache.jena.ontology.OntDocumentManager;
import org.apache.jena.ontology.OntModel;
import org.apache.jena.ontology.OntModelSpec;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.ModelFactory;
import org.apache.jena.rdfconnection.RDFConnection;
import org.apache.jena.rdfconnection.RDFConnectionFuseki;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
 
public class OntTestLoading {
 
    public static Logger logger = LoggerFactory.getLogger(OntTestLoading.class);
 
    private static final String ONT_POLICY = "https://raw.githubusercontent.com/buda-base/editor-templates/master/ont-policy.rdf";
    private static final String OUT = <local directory path for output ttl files>;
    private static final String DS = <dataset URL for putting and fetching models/graphs>;
    
    private static RDFConnection fuConn;
    
    private static final String BDG = "http://purl.bdrc.io/graph/";
    private static final String PERSON_SHAPES = "http://purl.bdrc.io/shapes/core/PersonShapes/";
    private static final String PERSON_UI_SHAPES = "http://purl.bdrc.io/shapes/core/PersonUIShapes/";
    
    private static OntModelSpec oms;
    private static OntDocumentManager odm;
    
    private static void initOdm() {
        oms = new OntModelSpec(OntModelSpec.OWL_MEM);        
        odm = new OntDocumentManager(ONT_POLICY);        
        oms.setDocumentManager(odm);
    }
    
    private static void writeTtl(Model m, String nm) {
        try {
            m.write(new FileWriter(OUT+nm+".ttl"), "TTL");
        } catch (Exception ex) {
            ex.printStackTrace();
        }        
    }
    
    private static void doTest(String ontUri, boolean processImports, String graphLocalName) {
        doTest(ontUri, processImports, graphLocalName, false);
    }
    
    private static void doTest(String ontUri, boolean processImports, String graphLocalName, boolean loadImp) {
        doTest(oms, odm, ontUri, processImports, graphLocalName, loadImp);
    }
    
    private static void doTest(OntModelSpec oms, OntDocumentManager odm, String ontUri, boolean processImports, String graphLocalName, boolean loadImp) {
        logger.info("processing {} imports {}", graphLocalName, processImports);
        
        odm.setProcessImports(processImports);
        
        // fetch OntModel
        OntModel om = odm.getOntology(ontUri, oms);      
        writeTtl(om, graphLocalName+"_ONT_MOD_GET_ONT");
        
        // send OntModel to Fuseki and retrieve Model by graph name
        String graphName = BDG+graphLocalName;
        fuConn.put(graphName, om);
        Model mFmFu = fuConn.fetch(graphName);
        writeTtl(mFmFu, graphLocalName+"_MODEL_FM_FUSEKI");
 
        // explicitly load
        if (loadImp) {
            om.loadImports();
            writeTtl(om, graphLocalName+"_ONT_MOD_LOAD_IMP");
        }
    }
    
    public static void main(String[] args){
        
        fuConn = RDFConnectionFuseki.create().destination(DS).build();        
 
        // PROCESS IMPORTS FALSE
        initOdm();
        doTest(PERSON_SHAPES, false, "PersonShapes_NI10");        
 
        // PROCESS IMPORTS TRUE
        initOdm();        
        doTest(PERSON_SHAPES, true, "PersonShapes_WI10", true);
 
        // PROCESS IMPORTS FALSE
        initOdm();
        doTest(PERSON_UI_SHAPES, false, "PersonUIhapes_NI10");        
 
        // PROCESS IMPORTS TRUE
        initOdm();        
        doTest(PERSON_UI_SHAPES, true, "PersonUIShapes_WI10");
    }
}

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎