From: <lor...@us...> - 2013-04-30 11:06:06
|
Revision: 3930 http://sourceforge.net/p/dl-learner/code/3930 Author: lorenz_b Date: 2013-04-30 11:06:03 +0000 (Tue, 30 Apr 2013) Log Message: ----------- Added class which fills JENA model with explicit type statements for entities. Added Paths: ----------- trunk/components-core/src/main/java/org/dllearner/utilities/owl/OWLEntityTypeAdder.java Added: trunk/components-core/src/main/java/org/dllearner/utilities/owl/OWLEntityTypeAdder.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/utilities/owl/OWLEntityTypeAdder.java (rev 0) +++ trunk/components-core/src/main/java/org/dllearner/utilities/owl/OWLEntityTypeAdder.java 2013-04-30 11:06:03 UTC (rev 3930) @@ -0,0 +1,50 @@ +package org.dllearner.utilities.owl; + +import java.util.HashSet; +import java.util.Set; + +import com.google.common.collect.Sets; +import com.hp.hpl.jena.rdf.model.Model; +import com.hp.hpl.jena.rdf.model.Property; +import com.hp.hpl.jena.rdf.model.RDFNode; +import com.hp.hpl.jena.rdf.model.Statement; +import com.hp.hpl.jena.rdf.model.StmtIterator; +import com.hp.hpl.jena.vocabulary.OWL; +import com.hp.hpl.jena.vocabulary.RDF; +import com.hp.hpl.jena.vocabulary.RDFS; + +public class OWLEntityTypeAdder { + + /** + * Infers the type of predicates p_i by analyzing the object of the triples using p_i and adds the + * entity type assertion to the model, i.e. for a data property dp <dp a owl:DatatypeProperty> + * will be added. + * @param model + */ + public static void addEntityTypes(Model model){ + StmtIterator iterator = model.listStatements(); + Set<Property> objectPropertyPredicates = new HashSet<Property>(); + Set<Property> dataPropertyPredicates = new HashSet<Property>(); + while(iterator.hasNext()){ + Statement st = iterator.next(); + Property predicate = st.getPredicate(); + if(!predicate.getURI().startsWith(RDF.getURI()) && !predicate.getURI().startsWith(RDFS.getURI())){ + RDFNode object = st.getObject(); + if(object.isLiteral()){ + dataPropertyPredicates.add(predicate); + } else if(object.isResource()){ + objectPropertyPredicates.add(predicate); + } + } + } + iterator.close(); + + for (Property property : Sets.difference(objectPropertyPredicates, dataPropertyPredicates)) { + model.add(property, RDF.type, OWL.ObjectProperty); + } + for (Property property : Sets.difference(dataPropertyPredicates, objectPropertyPredicates)) { + model.add(property, RDF.type, OWL.DatatypeProperty); + } + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |