Package org.ontoware.rdf2go.model

Examples of org.ontoware.rdf2go.model.Model


    return new ReactorMap(o2m.get(obj), o2r.get(obj));
  }

  public static boolean removeAll(Object obj, URI p) {
    Resource r = o2r.get(obj);
    Model m = o2m.get(r);

    try {
      return Bridge.removeAllValues(m, r, p);
    } catch (Exception e) {
      throw new RuntimeException(e);
View Full Code Here


public class Step1 {
 
  public static void main(String[] args) throws Exception {
    // getting a ModelFactory, declaring a model
    ModelFactory modelFactory = RDF2Go.getModelFactory();
    Model model;
   
    // enabling reasoning:
    Reasoning reasoning;
    reasoning = Reasoning.rdfs;
    model = modelFactory.createModel(reasoning);
    model.open();

    // using reasoning (here: assuming RDFS semantics)
    URI A = model.createURI("urn:A");
    URI B = model.createURI("urn:B");
    URI C = model.createURI("urn:C");
    model.addStatement(B, RDFS.subClassOf, A);
    model.addStatement(C, RDFS.subClassOf, B);
    // now let's see who is a superclass of C:
    System.out.println("All superclasses of "+C+":");
    ClosableIterator<? extends Statement> it = model.findStatements(C, RDFS.subClassOf, Variable.ANY);
    while (it.hasNext()) {
      System.out.println(it.next().getObject());
    }
    it.close();
  }
View Full Code Here

    Query query = QueryFactory.create(queryString);
    QueryExecution qexec = QueryExecutionFactory.create(query, this.jenaModel);
   
    if(query.isConstructType()) {
      com.hp.hpl.jena.rdf.model.Model m = qexec.execConstruct();
      Model resultModel = new ModelImplJena(null, m, Reasoning.none);
      resultModel.open();
      return resultModel;
    } else {
      throw new RuntimeException("Cannot handle this type of queries! Please use CONSTRUCT.");
    }
  }
View Full Code Here

    Query query = QueryFactory.create(queryString);
    QueryExecution qexec = QueryExecutionFactory.create(query, this.jenaModel);
   
    if(query.isDescribeType()) {
      com.hp.hpl.jena.rdf.model.Model m = qexec.execDescribe();
      Model resultModel = new ModelImplJena(null, m, Reasoning.none);
      resultModel.open();
      return resultModel;
    } else {
      throw new RuntimeException("Cannot handle this type of queries! Please use DESCRIBE.");
    }
   
View Full Code Here

   
    QueryExecution qexec = QueryExecutionFactory.create(query, this.jenaModel);
   
    if(query.isConstructType()) {
      com.hp.hpl.jena.rdf.model.Model m = qexec.execConstruct();
      Model resultModel = new ModelImplJena(null, m, Reasoning.none);
      resultModel.open();
      return resultModel;
    } else {
      throw new RuntimeException("Cannot handle this type of queries! Please use CONSTRUCT.");
    }
  }
View Full Code Here

     *   the properties lat,long,alt which stands for
     *     latitude (in decimal degrees), a String
     *     longitude (in decimal degrees), a String
     *     altitude (in decimal meters above the local reference ellipsoid), a String
     */
    Model model = RDF2Go.getModelFactory().createModel();
    model.open();

    Point.init(model);
   
    @SuppressWarnings("unused")
    Point A = new Point("0","0","0");
    @SuppressWarnings("unused")
    Point B = new Point("1,4","10,1","0");
   
    model.writeTo(System.out, Syntax.Turtle);
  }
View Full Code Here

            boolean skipbuiltins) {
       
        log.info("Input model has " + modelWithSchemaData.size() + " triples");
       
        // enable RDFS inferencing
        Model m = RDF2Go.getModelFactory().createModel(Reasoning.rdfs);
        m.open();
        m.addAll(modelWithSchemaData.iterator());
       
        // prepare JModel
        JModel jm = Semantics.getbuiltIns_RDFS();
       
        JPackage jp = new JPackage(packagename);
        jm.getPackages().add(jp);
       
        // set local ontology root
        JClass localRoot = new JClass(jp, "Thing1", RDFS.Class);
        localRoot
                .setComment("This class acts as a catch-all for all properties, for which no domain has specified.");
        localRoot.addSuperclass(jm.getRoot());
        jm.setRoot(localRoot);
       
        // process
        log.debug("de-anonymizing (replacing bnodes with random uris");
        ModelUtils.deanonymize(m);
       
        // analysis (triggers also inferencing)
        List<? extends Class> rdfclasses = Class.getAllInstance_as(m).asList();
        log.info("Got " + rdfclasses.size() + " rdfs:Classes");
        for(Class c : rdfclasses) {
            log.debug("Found class: " + c.getResource());
        }
        Property[] rdfproperties = Property.getAllInstance_as(m).asArray();
        for(Property p : rdfproperties) {
            log.debug("Found property: " + p.getResource());
        }
        log.info("Got " + rdfproperties.length + " rdfs:Properties");
        log.debug("Found " + m.size() + " statements in schema after inferencing.");
       
        // get all classes and assign to package
        Set<String> usedClassnames = new HashSet<String>();
        usedClassnames.add(jm.getRoot().getName());
        Set<Class> rdfsClasses = new HashSet<Class>();
       
        for(Class rc : Class.getAllInstance_as(m).asList()) {
           
            if(skipbuiltins && jm.hasMapping(rc.getResource())) {
                log.debug("CLASS " + rc + " is known -> skipping generation");
            } else if(!(rc.getResource() instanceof URI)) {
                log.warn("A Class with a blank node ID makes not much sense -> ignored");
            } else {
                rdfsClasses.add(rc);
                // TODO better classname guessing
                String classname = JavaNamingUtils.toBeanName(rc, usedClassnames);
                assert classname != null;
                usedClassnames.add(classname);
               
                log.debug("CLASS " + classname + " generated for " + rc.getResource() + " ...");
                assert rc.getResource() instanceof URI : "A Class with a blank node ID makes not much sense";
                JClass jc = new JClass(jp, classname, (URI)rc.getResource());
                jc.setComment(Utils.toJavaComment(rc.getAllComment_asList())); // might
                                                                               // be
                                                                               // null,
                                                                               // ok.
                jm.addMapping(rc.getResource(), jc);
            }
        }
       
        log.debug(">>>> Inheritance");
        // get all classes and link superclasses
        for(org.ontoware.rdfreactor.schema.bootstrap.Class rc : rdfsClasses) {
            log.debug("rdfs:Class " + rc.getResource());
            JClass jc = jm.getMapping(rc.getResource());
            for(org.ontoware.rdfreactor.schema.bootstrap.Class superclass : rc
                    .getAllSubClassOf_asList())
                jc.addSuperclass(jm.getMapping(superclass.getResource()));
        }
       
        log.info("-------------- PROPERTIES ...");
       
        for(Property rp : Property.getAllInstance_as(m).asList()) {
            log.info("PROPERTY " + rp.getResource());
           
            if(skipbuiltins && jm.knownProperties.contains(rp.getResource().asURI())) {
                // do nothing
                log.debug("Skipping built-in property " + rp.getResource().asURI().toSPARQL());
            } else if(DeprecatedProperty.hasInstance(rp.getModel(), rp.getResource().asURI())) {
                log.info("Skipping deprecated property " + rp
                        + " (as indicated by owl:DeprecatedProperty)");
            } else {
                // inspect domains
                List<Class> domains = rp.getAllDomain_asList();
                // TODO: ignore if already in higher level
                if(domains == null || domains.size() == 0) {
                    log.warn("PROPERTY " + rp.getResource() + " has no domain, using root");
                    handleProperty(m, jm, jm.getRoot(), rp);
                } else {
                    for(Resource domain : domains) {
                        log.info("PROPERTY " + rp.getResource() + " has domain " + domain);
                        JClass domainClass = jm.getMapping(domain.getResource());
                        assert domainClass != null : "found no JClass for "
                                + rp.getAllDomain_asList().get(0).getResource();
                       
                        // domainclass might be a built-in, redirect to root
                        if(Semantics.getbuiltIns_RDFS().containsJClass(domainClass)) {
                            log.info("domain " + domainClass
                                    + " is a built-in, hence we attach the property to the root ("
                                    + jm.getRoot() + ")");
                            domainClass = jm.getRoot();
                        }
                       
                        handleProperty(m, jm, domainClass, rp);
                    }
                }
            }
           
            jm.flattenInheritanceHierarchy(jp);
           
            jm.materialiseMissingProperties(jp, skipbuiltins);
           
        }
        m.close();
        m = null;
        return jm;
    }
View Full Code Here

            boolean skipbuiltins) {
        log.info("Initialising JModel");
        JModel jm = Semantics.getbuiltIns_RDFS();
       
        log.info("Loading schema triples");
        Model m = RDF2Go.getModelFactory().createModel(Reasoning.rdfsAndOwl);
        m.open();
        m.addAll(schemaDataModel.iterator());
       
        log.info("Skolemisation (replacing all blank nodes with random URIs)");
        ModelUtils.deanonymize(m);
       
        log.info("Add mapping from OWL to RDF");
        // add mapping from OWL to RDF
        m.addStatement(OWL.Class, RDFS.subClassOf, RDFS.Class);
        m.addStatement(OWL.AnnotationProperty, RDFS.subClassOf, RDF.Property);
        m.addStatement(OWL.DatatypeProperty, RDFS.subClassOf, RDF.Property);
        m.addStatement(OWL.FunctionalProperty, RDFS.subClassOf, RDF.Property);
        m.addStatement(OWL.InverseFunctionalProperty, RDFS.subClassOf, RDF.Property);
        m.addStatement(OWL.ObjectProperty, RDFS.subClassOf, RDF.Property);
        m.addStatement(OWL.OntologyProperty, RDFS.subClassOf, RDF.Property);
       
        log.debug("MODEL after inferencing, found " + m.size() + " statements");
        JPackage jp = new JPackage(packagename);
        jm.getPackages().add(jp);
       
        log.info("Creating a class called 'Thing1' for all properties with no given domain");
        JClass localClass = new JClass(jp, "Thing1", RDFS.Class);
        localClass.addSuperclass(jm.getRoot());
        jm.setRoot(localClass);
       
        // get all classes and assign to package
        Set<String> usedClassnames = new HashSet<String>();
        usedClassnames.add(jm.getRoot().getName());
        Set<Class> rdfsClasses = new HashSet<Class>();
       
        for(Class rc : Class.getAllInstance_as(m).asList()) {
           
            if(skipbuiltins && jm.hasMapping(rc.getResource())) {
                log.debug("CLASS " + rc + " is known -> skipping generation");
            } else {
                rdfsClasses.add(rc);
                // TODO better class-name guessing
                String classname = JavaNamingUtils.toBeanName(rc, usedClassnames);
                assert classname != null;
                usedClassnames.add(classname);
               
                log.debug("CLASS " + classname + " generated for " + rc.getResource().toSPARQL()
                        + " ...");
                JClass jc = new JClass(jp, classname, (URI)rc.getResource());
                jc.setComment(rc.getAllComment_asList().get(0)); // might be
                // null, ok.
                jm.addMapping(rc.getResource(), jc);
            }
        }
       
        log.info(">>>> Inheritance");
        // get all classes and link super-classes
        for(org.ontoware.rdfreactor.schema.bootstrap.Class rc : rdfsClasses) {
            log.debug("rdfs:Class " + rc.getResource());
            JClass jc = jm.getMapping(rc.getResource());
            for(org.ontoware.rdfreactor.schema.bootstrap.Class superclass : rc
                    .getAllSubClassOf_asList())
                jc.addSuperclass(jm.getMapping(superclass.getResource()));
        }
       
        log.info(">>>> Flatten inheritance hierarchy");
        jm.flattenInheritanceHierarchy(jp);
       
        // get all properties
        log.info("-------------- PROPERTIES ...");
        for(Property rp : Property.getAllInstance_as(m).asList()) {
            log.debug("PROPERTY " + rp.getResource());
            List<Class> domains = rp.getAllDomain_asList();
            // no domain = no generated property
            if(domains == null || domains.size() == 0) {
                // log.warn("PROPERTY " + rp.getID() + " has no domain, so we
                // ignore it");
                log.debug("PROPERTY " + rp.getResource() + " has no domain, using root");
                handleProperty(m, jm, jm.getRoot(), rp);
            } else {
                for(Resource domain : domains) {
                    JClass domainClass = jm.getMapping(domain.getResource());
                    assert domainClass != null : "found no JClass for "
                            + rp.getAllDomain_asList().get(0).getResource();
                    handleProperty(m, jm, domainClass, rp);
                }
            }
        }
        m.close();
        return jm;
    }
View Full Code Here

        //
        // OntModel combined = ModelFactory.createOntologyModel(spec, base);
        //
        // Model m = new ModelImplJena22(combined);
       
        Model m = RDF2Go.getModelFactory().createModel(Reasoning.owl);
        m.open();
        m.addAll(schemaDataModel.iterator());
       
        // Reasoner reasoner = ReasonerRegistry.getOWLMicroReasoner();//
        // miniReasoner();
        // reasoner = reasoner.bindSchema(schemaDataModel);
        // InfModel jenaModel = ModelFactory.createInfModel(reasoner,
        // schemaDataModel);
        // Model m = new ModelImplJena24(null, jenaModel);
       
        log.debug("de-anonymizing");
        ModelUtils.deanonymize(m);
       
        log.debug("after inferencing, found " + m.size() + " statements");
       
        // // DEBUG
        // File debugOut = new File(outDir, packagename + "/schema.nt");
        // debugOut.mkdir();
        // jenaModel.write(new FileWriter(debugOut), "N-TRIPLES");
       
        JPackage jp = new JPackage(packagename);
       
        // bootstrapping?
       
        JModel jm = Semantics.getbuiltIns_OWL();
        jm.addPackage(jp);
       
        /**
         * local ontology root
         */
        JClass localRoot = new JClass(jp, "Thing1", OWL.Class);
        localRoot
                .setComment("This class acts as a catch-all for all properties, for which no domain has specified.");
        localRoot.addSuperclass(jm.getRoot());
        jm.setRoot(localRoot);
       
        // get all classes and assign to package
        Set<org.ontoware.rdfreactor.schema.bootstrap.OwlClass> owlClasses = new HashSet<org.ontoware.rdfreactor.schema.bootstrap.OwlClass>();
        Set<String> usedClassnames = new HashSet<String>();
       
        for(org.ontoware.rdfreactor.schema.bootstrap.OwlClass oc : org.ontoware.rdfreactor.schema.bootstrap.OwlClass
                .getAllInstance_as(m).asList()) {
            log.debug("Found owl:Class " + oc.getResource() + " (have " + owlClasses.size()
                    + " already)");
           
            org.ontoware.rdf2go.model.node.Resource classURI = oc.getResource();
           
            // check if restriction or real class
            if(m.contains(classURI, RDF.type, OWL.Restriction)) {
                log.debug("skipping restriction " + classURI);
            } else if(skipbuiltins && jm.hasMapping(classURI)) {
                log.debug("skipping known class " + classURI);
                // TODO add all XSD classes to default JModels and remove this
                // check
            } else if(classURI.toString().startsWith(Semantics.NS_XSD)) {
                log.debug("skipping XML Schema class " + classURI);
                // TODO: what is the purpose of this?
            } else if(oc.getResource() instanceof BlankNode) {
                log.debug("skipping blank class " + classURI);
            } else {
                log.debug("owl:Class : " + classURI);
                owlClasses.add(oc);
                // TODO better classname guessing
                String classname = JavaNamingUtils.toBeanName(oc, usedClassnames);
                assert classname != null;
                usedClassnames.add(classname);
                log.debug("generating class " + classname + " for " + classURI + " ...");
                JClass jc = new JClass(jp, classname, (URI)oc.getResource());
                jc.setComment(oc.getAllComment_asList().get(0));
                jm.addMapping(oc.getResource(), jc);
            }
        }
        log.debug("dealing with " + owlClasses.size() + " 'real' classes");
       
        log.debug(">>>> Inheritance");
        // get all classes and link superclasses
        for(org.ontoware.rdfreactor.schema.bootstrap.OwlClass oc : owlClasses) {
            log.debug("owl:Class " + oc.getResource());
            JClass jc = jm.getMapping(oc.getResource());
            for(org.ontoware.rdfreactor.schema.bootstrap.OwlClass superclass : TypeUtils
                    .getAllRealSuperclasses(oc, owlClasses))
                jc.addSuperclass(jm.getMapping(superclass.getResource()));
        }
        jm.flattenInheritanceHierarchy(jp);
       
        // get all properties
        log.info(">>> Processing properties ...");
       
        // this uniqueness constraint can be weakened,
        // property names need only to be unique within a class,
        // but this might be more consistent anyways
        Set<String> usedPropertynames = new HashSet<String>();
       
        for(Property rp : Property.getAllInstance_as(m).asList()) {
            log.debug("> Processing property " + rp.getResource());
            // name it
            String propertyName = JavaNamingUtils.toBeanName(rp, usedPropertynames);
            usedPropertynames.add(propertyName);
            assert propertyName != null;
           
            List<Class> domains = rp.getAllDomain_asList();
            // no domain = no generated property
            if(domains == null || domains.size() == 0) {
                log.warn("Property " + rp.getResource() + " has no domain, so we ignore it");
            } else {
                for(Class domain : domains) {
                    if(!owlClasses.contains(domain)) {
                        // log.debug("ignored");
                    } else {
                        JClass domainClass = jm.getMapping(domain.getResource());
                        assert domainClass != null : "found no JClass for "
                                + rp.getAllDomain_asList().get(0).getResource();
                       
                        JProperty jprop = new JProperty(domainClass, propertyName,
                                (URI)rp.getResource());
                        // wire
                        log.debug("Adding property '" + jprop.getName() + "' to '"
                                + domainClass.getName() + "'");
                        jprop.getJClass().getProperties().add(jprop);
                        jprop.setComment(rp.getAllComment_asList().get(0));
                       
                        for(Class range : rp.getAllRange_asList()) {
                            if(owlClasses.contains(range
                                    .castTo(org.ontoware.rdfreactor.schema.owl.OwlClass.class)))
                                jprop.addType(jm.getMapping(range.getResource()));
                        }
                        jprop.fixRanges(jm);
                       
                        // figure out cardinality
                       
                        ClosableIterator<Statement> it = m.findStatements(Variable.ANY,
                                OWL.onProperty, rp.getResource());
                        while(it.hasNext()) {
                            Statement stmt = it.next();
                            org.ontoware.rdf2go.model.node.Resource restrictionResource = stmt
                                    .getSubject();
                            OWL_Protege_NRL_Restriction restriction = OWL_Protege_NRL_Restriction
                                    .getInstance(m, restrictionResource);
                           
                            int min = restriction.getAllMinCardinality_asList().get(0);
                            log.debug("Found minrestriction on " + rp + " minCard = " + min);
                            if(min != -1)
                                jprop.setMinCardinality(min);
                            int max = restriction.getAllMaxCardinality_asList().get(0);
                            log.debug("Found maxrestriction on " + rp + " maxCard = " + max);
                            if(max != -1)
                                jprop.setMaxCardinality(max);
                        }
                        it.close();
                    }
                }
            }
        }
       
        // // prune
        // log.debug(">>>>>> Pruning");
        // for (JClass jc : jp.getClasses()) {
        // // FIXME: this is too simple: if no properties: remove
        // if (jc.getProperties().size() == 0) {
        // log.debug(jc.getName() + " has no properties, removing");
        // jp.getClasses().remove(jc);
        // }
        // }
        m.close();
        return jm;
    }
View Full Code Here

    // getting model factory
    ModelFactory modelFactory = RDF2Go.getModelFactory();
   
    // getting model
    Model model = modelFactory.createModel();
    model.open();
    assert model.isOpen();

    // creating URIs
    String foafURI = "http://xmlns.com/foaf/0.1/";
    URI max = model.createURI("http://xam.de/foaf.rdf.xml#i");
    URI currentProject = model.createURI(foafURI + "#term_currentProject");
    URI name = model.createURI(foafURI + "#term_name");
    URI semweb4j = model.createURI("http://semweb4j.org");

    // adding a statement to the model
    model.addStatement(max, currentProject, semweb4j);
    model.addStatement(max, name, "Max Völkel");

    // dumping model to the screen
    model.dump();

    // removing a statement from the model
    model.removeStatement(max, currentProject, semweb4j);

    // dumping model to the screen
    model.dump();

  }
View Full Code Here

TOP

Related Classes of org.ontoware.rdf2go.model.Model

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.