Author: anuzzolese
Date: Fri Mar 4 15:50:50 2011
New Revision: 1078019
URL: http://svn.apache.org/viewvc?rev=1078019&view=rev
Log:
STANBOL-108 Modified Semion Refactorer in order to use the new rule language
for graph refactoring.
Modified:
incubator/stanbol/trunk/kres/eu.iksproject.kres.semion.refactorer/src/main/java/eu/iksproject/kres/semion/refactorer/SemionRefactorerImpl.java
Modified:
incubator/stanbol/trunk/kres/eu.iksproject.kres.semion.refactorer/src/main/java/eu/iksproject/kres/semion/refactorer/SemionRefactorerImpl.java
URL:
http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.semion.refactorer/src/main/java/eu/iksproject/kres/semion/refactorer/SemionRefactorerImpl.java?rev=1078019&r1=1078018&r2=1078019&view=diff
==============================================================================
---
incubator/stanbol/trunk/kres/eu.iksproject.kres.semion.refactorer/src/main/java/eu/iksproject/kres/semion/refactorer/SemionRefactorerImpl.java
(original)
+++
incubator/stanbol/trunk/kres/eu.iksproject.kres.semion.refactorer/src/main/java/eu/iksproject/kres/semion/refactorer/SemionRefactorerImpl.java
Fri Mar 4 15:50:50 2011
@@ -12,6 +12,7 @@ import org.apache.clerezza.rdf.core.acce
import org.apache.clerezza.rdf.core.access.WeightedTcProvider;
import org.apache.clerezza.rdf.core.impl.SimpleMGraph;
import org.apache.clerezza.rdf.core.serializedform.Serializer;
+import org.apache.clerezza.rdf.core.sparql.NoQueryEngineException;
import org.apache.clerezza.rdf.core.sparql.ParseException;
import org.apache.clerezza.rdf.core.sparql.QueryParser;
import org.apache.clerezza.rdf.core.sparql.query.ConstructQuery;
@@ -38,7 +39,12 @@ import com.hp.hpl.jena.query.Query;
import com.hp.hpl.jena.query.QueryExecution;
import com.hp.hpl.jena.query.QueryExecutionFactory;
import com.hp.hpl.jena.query.QueryFactory;
+import com.hp.hpl.jena.query.Syntax;
import com.hp.hpl.jena.rdf.model.Model;
+import com.hp.hpl.jena.sparql.function.FunctionRegistry;
+import com.hp.hpl.jena.sparql.pfunction.PropertyFunctionRegistry;
+import com.hp.hpl.jena.tdb.TDBFactory;
+import com.hp.hpl.jena.update.UpdateAction;
import eu.iksproject.kres.api.manager.DuplicateIDException;
import eu.iksproject.kres.api.manager.KReSONManager;
@@ -61,6 +67,10 @@ import eu.iksproject.kres.api.semion.Sem
import eu.iksproject.kres.api.semion.SemionRefactoringException;
import eu.iksproject.kres.api.semion.util.URIGenerator;
import eu.iksproject.kres.api.storage.OntologyStorage;
+import eu.iksproject.kres.rules.arqextention.CreatePropertyURIStringFromLabel;
+import eu.iksproject.kres.rules.arqextention.CreateStandardLabel;
+import eu.iksproject.kres.rules.arqextention.CreateURI;
+import eu.iksproject.kres.shared.transformation.JenaToClerezzaConverter;
import eu.iksproject.kres.shared.transformation.JenaToOwlConvert;
import eu.iksproject.kres.shared.transformation.OWLAPIToClerezzaConverter;
@@ -340,6 +350,12 @@ public class SemionRefactorerImpl implem
semionManager.registerRefactorer(this);
+
+
PropertyFunctionRegistry.get().put("http://www.stlab.istc.cnr.it/semion/function#createURI",
CreateURI.class);
+
FunctionRegistry.get().put("http://www.stlab.istc.cnr.it/semion/function#createLabel",
CreateStandardLabel.class);
+
FunctionRegistry.get().put("http://www.stlab.istc.cnr.it/semion/function#propString",
CreatePropertyURIStringFromLabel.class);
+
+
log.info("Activated KReS Semion Refactorer");
}
@@ -699,57 +715,38 @@ public class SemionRefactorerImpl implem
for(KReSRule kReSRule : kReSRuleList){
String sparql = kReSRule.toSPARQL();
log.info("SPARQL : "+sparql);
- //Query sparqlQuery =
QueryFactory.create(sparql);
- // QueryExecution qexec =
- // QueryExecutionFactory.create(sparqlQuery,
ontModel) ;
- //Model refactoredModel = qexec.execConstruct();
-
- ConstructQuery constructQuery;
- try {
- constructQuery = (ConstructQuery)
QueryParser.getInstance()
- .parse(sparql);
- Graph constructedGraph =
tcManager.executeSparqlQuery(
- constructQuery, mGraph);
- unionMGraph.addAll(constructedGraph);
- } catch (ParseException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
+ Graph constructedGraph = null;
+
+ switch (kReSRule.getExpressiveness()) {
+ case KReSCore:
+ constructedGraph =
kReSCoreOperation(sparql, mGraph);
+ break;
+ case ForwardChaining:
+ constructedGraph =
forwardChainingOperation(sparql, mGraph);
+ break;
+ case Reflexive:
+ constructedGraph =
kReSCoreOperation(sparql, unionMGraph);
+ break;
+ case SPARQLConstruct:
+ constructedGraph =
kReSCoreOperation(sparql, mGraph);
+ break;
+ case SPARQLDelete:
+ constructedGraph =
sparqlUpdateOperation(sparql, unionMGraph);
+ break;
+ case SPARQLDeleteData:
+ constructedGraph =
sparqlUpdateOperation(sparql, unionMGraph);
+ break;
+ default:
+ break;
}
- /*
- * OWLOntology refactoredDataSet =
- *
jenaToOwlConvert.ModelJenaToOwlConvert(refactoredModel,
- * "RDF/XML");
- *
- * ByteArrayOutputStream out = new
ByteArrayOutputStream(); try
- * {
ontologyManager.saveOntology(refactoredDataSet, new
- * RDFXMLOntologyFormat(), out); } catch
- * (OWLOntologyStorageException e) { // TODO
Auto-generated
- * catch block e.printStackTrace(); }
- *
- * ByteArrayInputStream in = new
- * ByteArrayInputStream(out.toByteArray());
- *
- * try {
ontologyManager2.loadOntologyFromOntologyDocument(in);
- * } catch (OWLOntologyCreationException e) {
// TODO
- * Auto-generated catch block
e.printStackTrace(); }
- */
+
+ if(constructedGraph != null){
+ unionMGraph.addAll(constructedGraph);
+ }
}
-
- /*
- * OWLOntologyMerger merger = new
- * OWLOntologyMerger(ontologyManager2);
- *
- * try { IRI defaultOntologyIRI =
- *
IRI.create("http://kres.iksproject.eu/semion/autoGeneratedOntology"
- * ); refactoredOntology =
- * merger.createMergedOntology(ontologyManager,
defaultOntologyIRI);
- *
- * } catch (OWLOntologyCreationException e) { // TODO
Auto-generated
- * catch block e.printStackTrace(); }
- */
refactoredOntology = OWLAPIToClerezzaConverter
.clerezzaMGraphToOWLOntology(unionMGraph);
@@ -768,5 +765,54 @@ public class SemionRefactorerImpl implem
return refactoredOntology;
}
}
+
+
+
+ private Graph kReSCoreOperation(String query, MGraph mGraph){
+
+ /*
+
+ Graph constructedGraph = null;
+ try {
+ ConstructQuery constructQuery = (ConstructQuery)
QueryParser.getInstance()
+ .parse(query);
+ constructedGraph = tcManager.executeSparqlQuery(
+ constructQuery, mGraph);
+
+ } catch (ParseException e) {
+ log.error(e.getMessage());
+ } catch (NoQueryEngineException e) {
+ log.error(e.getMessage());
+ }
+
+ return constructedGraph;
+ */
+
+
+ Model model =
JenaToClerezzaConverter.clerezzaMGraphToJenaModel(mGraph);
+
+ Query sparqlQuery = QueryFactory.create(query,
Syntax.syntaxARQ);
+ QueryExecution qexec =
QueryExecutionFactory.create(sparqlQuery, model) ;
+
+ return
JenaToClerezzaConverter.jenaModelToClerezzaMGraph(qexec.execConstruct()).getGraph();
+
+
+ }
+
+
+ private Graph forwardChainingOperation(String query, MGraph mGraph){
+
+ Graph graph = kReSCoreOperation(query, mGraph);
+
+ mGraph.addAll(graph);
+
+ return graph;
+ }
+
+ private Graph sparqlUpdateOperation(String query, MGraph mGraph){
+ Model model =
JenaToClerezzaConverter.clerezzaMGraphToJenaModel(mGraph);
+ UpdateAction.parseExecute(query, model);
+ return
JenaToClerezzaConverter.jenaModelToClerezzaMGraph(model).getGraph();
+ }
}