Author: tommaso
Date: Mon Aug 22 10:16:18 2011
New Revision: 1160186
URL: http://svn.apache.org/viewvc?rev=1160186&view=rev
Log:
[CLEREZZA-627] - enable definition of different CAS mapping strategies
Added:
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/CASMappingException.java
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/CASMappingStrategiesRepository.java
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/CASMappingStrategy.java
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/DefaultCASMappingStrategy.java
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/UnknownStrategyException.java
Modified:
incubator/clerezza/trunk/parent/uima/uima.casconsumer/ (props changed)
incubator/clerezza/trunk/parent/uima/uima.casconsumer/pom.xml
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/ClerezzaCASConsumer.java
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/resources/ClerezzaCASConsumerDescriptor.xml
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/test/resources/TestClerezzaCASConsumerDescriptor.xml
Propchange: incubator/clerezza/trunk/parent/uima/uima.casconsumer/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Mon Aug 22 10:16:18 2011
@@ -1,2 +1,6 @@
target
*.iml
+
+.settings
+
+.project
Modified: incubator/clerezza/trunk/parent/uima/uima.casconsumer/pom.xml
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/uima/uima.casconsumer/pom.xml?rev=1160186&r1=1160185&r2=1160186&view=diff
==============================================================================
--- incubator/clerezza/trunk/parent/uima/uima.casconsumer/pom.xml (original)
+++ incubator/clerezza/trunk/parent/uima/uima.casconsumer/pom.xml Mon Aug 22
10:16:18 2011
@@ -6,7 +6,6 @@
<version>0.1-incubating-SNAPSHOT</version>
<packaging>bundle</packaging>
<name>Clerezza - Apache UIMA CAS Consumer for Graph objects</name>
- <description>Clerezza - Apache UIMA CAS Consumer for Graph
objects</description>
<parent>
<groupId>org.apache.clerezza</groupId>
<artifactId>uima</artifactId>
Added:
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/CASMappingException.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/CASMappingException.java?rev=1160186&view=auto
==============================================================================
---
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/CASMappingException.java
(added)
+++
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/CASMappingException.java
Mon Aug 22 10:16:18 2011
@@ -0,0 +1,10 @@
+package org.apache.clerezza.uima.casconsumer;
+
+/**
+ * An {@link Exception} thrown when mapping a CAS model to RDF
+ */
+public class CASMappingException extends Exception {
+ public CASMappingException(Throwable cause) {
+ super(cause);
+ }
+}
Added:
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/CASMappingStrategiesRepository.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/CASMappingStrategiesRepository.java?rev=1160186&view=auto
==============================================================================
---
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/CASMappingStrategiesRepository.java
(added)
+++
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/CASMappingStrategiesRepository.java
Mon Aug 22 10:16:18 2011
@@ -0,0 +1,38 @@
+package org.apache.clerezza.uima.casconsumer;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * A repository for {@link CASMappingStrategy} implementations
+ */
+public class CASMappingStrategiesRepository {
+ private static CASMappingStrategiesRepository instance = new
CASMappingStrategiesRepository();
+
+ private Map<String, CASMappingStrategy> strategies;
+
+ public static CASMappingStrategiesRepository getInstance() {
+ return instance;
+ }
+
+ private CASMappingStrategiesRepository() {
+ initialize();
+ }
+
+ private void initialize() {
+ strategies = new HashMap<String, CASMappingStrategy>();
+ strategies.put("default", new DefaultCASMappingStrategy());
+ }
+
+ public void register(CASMappingStrategy casMappingStrategy, String name) {
+ strategies.put(name, casMappingStrategy);
+ }
+
+ public CASMappingStrategy getStrategy(String name) throws
UnknownStrategyException {
+ if (strategies.get(name) != null)
+ return strategies.get(name);
+ else
+ throw new UnknownStrategyException(new StringBuilder("Could not find a
strategy with name '").append(name).
+ append("'").toString());
+ }
+}
Added:
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/CASMappingStrategy.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/CASMappingStrategy.java?rev=1160186&view=auto
==============================================================================
---
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/CASMappingStrategy.java
(added)
+++
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/CASMappingStrategy.java
Mon Aug 22 10:16:18 2011
@@ -0,0 +1,17 @@
+package org.apache.clerezza.uima.casconsumer;
+
+import org.apache.uima.cas.CAS;
+
+/**
+ * a {@link CASMappingStrategy} defines a strategy for mapping a CAS object to
an RDF model/file/object/store
+ */
+public interface CASMappingStrategy {
+
+ /**
+ * Converts a {@link CAS} object to an RDF object
+ * @param cas the {@link CAS} object to convert
+ * @param graphName the name of the graph to be created
+ * @throws CASMappingException
+ */
+ void map(CAS cas, String graphName) throws CASMappingException;
+}
Modified:
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/ClerezzaCASConsumer.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/ClerezzaCASConsumer.java?rev=1160186&r1=1160185&r2=1160186&view=diff
==============================================================================
---
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/ClerezzaCASConsumer.java
(original)
+++
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/ClerezzaCASConsumer.java
Mon Aug 22 10:16:18 2011
@@ -18,20 +18,11 @@
*/
package org.apache.clerezza.uima.casconsumer;
-import org.apache.clerezza.rdf.core.BNode;
-import org.apache.clerezza.rdf.core.MGraph;
import org.apache.clerezza.rdf.core.TripleCollection;
-import org.apache.clerezza.rdf.core.UriRef;
-import org.apache.clerezza.rdf.core.access.TcManager;
-import org.apache.clerezza.rdf.utils.GraphNode;
-import org.apache.clerezza.uima.utils.UIMAUtils;
-import
org.apache.clerezza.uima.utils.exception.FeatureStructureNotFoundException;
import org.apache.uima.UimaContext;
import org.apache.uima.analysis_component.CasAnnotator_ImplBase;
import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
import org.apache.uima.cas.CAS;
-import org.apache.uima.cas.CASException;
-import org.apache.uima.jcas.cas.TOP;
import org.apache.uima.resource.ResourceInitializationException;
/**
@@ -40,14 +31,19 @@ import org.apache.uima.resource.Resource
public class ClerezzaCASConsumer extends CasAnnotator_ImplBase {
private String graphName;
- private String casModelFilePath;
+ private CASMappingStrategy mappingStrategy;
@Override
public void initialize(UimaContext context) throws
ResourceInitializationException {
super.initialize(context);
- // get the RDF model
- casModelFilePath =
String.valueOf(context.getConfigParameterValue("casModelFile"));
+ // get the CAS mapping strategy
+ try {
+ mappingStrategy =
CASMappingStrategiesRepository.getInstance().getStrategy(String.valueOf(context.
+ getConfigParameterValue("mappingStrategy")));
+ } catch (UnknownStrategyException e) {
+ throw new ResourceInitializationException(e);
+ }
// get the output graph name
graphName = String.valueOf(context.getConfigParameterValue("graphName"));
@@ -55,29 +51,11 @@ public class ClerezzaCASConsumer extends
@Override
public void process(CAS cas) throws AnalysisEngineProcessException {
- // create the output graph
- MGraph outputGraph = createGraph();
-
- // create the root node
- GraphNode sample = new GraphNode(new BNode(), outputGraph);
-
- // if no casModel was specified use the default mapping
- if (casModelFilePath==null || casModelFilePath.length()==0) {
- try {
- UIMAUtils.enhanceNode(sample, UIMAUtils.getAllFSofType(TOP.type,
cas.getJCas()));
- } catch (FeatureStructureNotFoundException e) {
- throw new AnalysisEngineProcessException(e);
- } catch (CASException e) {
- throw new AnalysisEngineProcessException(e);
- }
+ try {
+ mappingStrategy.map(cas, graphName);
+ } catch (CASMappingException e) {
+ throw new AnalysisEngineProcessException(e);
}
- // TODO otherwise map UIMA FeatureStructures to Triples using the given
casModel
-
}
- private MGraph createGraph() {
- final TcManager tcManager = TcManager.getInstance();
- final UriRef mGraphName = new UriRef(graphName);
- return tcManager.createMGraph(mGraphName);
- }
}
Added:
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/DefaultCASMappingStrategy.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/DefaultCASMappingStrategy.java?rev=1160186&view=auto
==============================================================================
---
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/DefaultCASMappingStrategy.java
(added)
+++
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/DefaultCASMappingStrategy.java
Mon Aug 22 10:16:18 2011
@@ -0,0 +1,31 @@
+package org.apache.clerezza.uima.casconsumer;
+
+import org.apache.clerezza.rdf.core.BNode;
+import org.apache.clerezza.rdf.core.UriRef;
+import org.apache.clerezza.rdf.core.access.TcManager;
+import org.apache.clerezza.rdf.utils.GraphNode;
+import org.apache.clerezza.uima.utils.UIMAUtils;
+import org.apache.uima.cas.CAS;
+import org.apache.uima.jcas.cas.TOP;
+
+/**
+ * the default implementation for {@link CASMappingStrategy}
+ */
+public class DefaultCASMappingStrategy implements CASMappingStrategy {
+
+ @Override
+ public void map(CAS cas, String graphName) throws CASMappingException {
+ try {
+ GraphNode node = createNode(graphName);
+ UIMAUtils.enhanceNode(node, UIMAUtils.getAllFSofType(TOP.type,
cas.getJCas()));
+ } catch (Exception e) {
+ throw new CASMappingException(e);
+ }
+ }
+
+ private GraphNode createNode(String graphName) {
+ final TcManager tcManager = TcManager.getInstance();
+ final UriRef mGraphName = new UriRef(graphName);
+ return new GraphNode(new BNode(), tcManager.createMGraph(mGraphName));
+ }
+}
Added:
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/UnknownStrategyException.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/UnknownStrategyException.java?rev=1160186&view=auto
==============================================================================
---
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/UnknownStrategyException.java
(added)
+++
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/java/org/apache/clerezza/uima/casconsumer/UnknownStrategyException.java
Mon Aug 22 10:16:18 2011
@@ -0,0 +1,11 @@
+package org.apache.clerezza.uima.casconsumer;
+
+/**
+ * Exception raised when an unrecognized (unknown or registered with wrong
name) {@link CASMappingStrategy} is requested
+ * to the {@link CASMappingStrategiesRepository}
+ */
+public class UnknownStrategyException extends Throwable {
+ public UnknownStrategyException(String message) {
+ super(message);
+ }
+}
Modified:
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/resources/ClerezzaCASConsumerDescriptor.xml
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/resources/ClerezzaCASConsumerDescriptor.xml?rev=1160186&r1=1160185&r2=1160186&view=diff
==============================================================================
---
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/resources/ClerezzaCASConsumerDescriptor.xml
(original)
+++
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/main/resources/ClerezzaCASConsumerDescriptor.xml
Mon Aug 22 10:16:18 2011
@@ -36,7 +36,7 @@
<mandatory>true</mandatory>
</configurationParameter>
<configurationParameter>
- <name>casModelFile</name>
+ <name>mappingStrategy</name>
<type>String</type>
<multiValued>false</multiValued>
<mandatory>true</mandatory>
@@ -50,9 +50,9 @@
</value>
</nameValuePair>
<nameValuePair>
- <name>casModelFile</name>
+ <name>mappingStrategy</name>
<value>
- <string></string>
+ <string>default</string>
</value>
</nameValuePair>
</configurationParameterSettings>
Modified:
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/test/resources/TestClerezzaCASConsumerDescriptor.xml
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/test/resources/TestClerezzaCASConsumerDescriptor.xml?rev=1160186&r1=1160185&r2=1160186&view=diff
==============================================================================
---
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/test/resources/TestClerezzaCASConsumerDescriptor.xml
(original)
+++
incubator/clerezza/trunk/parent/uima/uima.casconsumer/src/test/resources/TestClerezzaCASConsumerDescriptor.xml
Mon Aug 22 10:16:18 2011
@@ -36,7 +36,7 @@
<mandatory>true</mandatory>
</configurationParameter>
<configurationParameter>
- <name>casModelFile</name>
+ <name>mappingStrategy</name>
<type>String</type>
<multiValued>false</multiValued>
<mandatory>true</mandatory>
@@ -50,9 +50,9 @@
</value>
</nameValuePair>
<nameValuePair>
- <name>casModelFile</name>
+ <name>mappingStrategy</name>
<value>
- <string></string>
+ <string>default</string>
</value>
</nameValuePair>
</configurationParameterSettings>