You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by ci...@apache.org on 2011/06/30 16:35:12 UTC
svn commit: r1141552 - in /incubator/stanbol/trunk/cmsadapter:
cmis/src/main/java/org/apache/stanbol/cmsadapter/cmis/processor/
cmis/src/main/java/org/apache/stanbol/cmsadapter/cmis/repository/
core/src/main/java/org/apache/stanbol/cmsadapter/core/mapp...
Author: cihan
Date: Thu Jun 30 14:35:11 2011
New Revision: 1141552
URL: http://svn.apache.org/viewvc?rev=1141552&view=rev
Log:
bugfixes, minor updates, javadocs
EnhancementFetcher no longer merges enhancement graph to generated ontology. Instead adds a property to every resource that indicates where enhancement graph is.
Fixed erronous ontology href creation in RestURIHelper
Added javadocs for api and some core classes.
Modified:
incubator/stanbol/trunk/cmsadapter/cmis/src/main/java/org/apache/stanbol/cmsadapter/cmis/processor/CMISNodeTypeLifter.java
incubator/stanbol/trunk/cmsadapter/cmis/src/main/java/org/apache/stanbol/cmsadapter/cmis/processor/RelationshipProcessor.java
incubator/stanbol/trunk/cmsadapter/cmis/src/main/java/org/apache/stanbol/cmsadapter/cmis/repository/CMISModelMapper.java
incubator/stanbol/trunk/cmsadapter/cmis/src/main/java/org/apache/stanbol/cmsadapter/cmis/repository/CMISProperty.java
incubator/stanbol/trunk/cmsadapter/cmis/src/main/java/org/apache/stanbol/cmsadapter/cmis/repository/CMISQueryHelper.java
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/mapping/DefaultNamingStrategy.java
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/mapping/MappingEngineImpl.java
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/processor/ClassificationObjectProcesser.java
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/processor/ContentObjectProcesser.java
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/processor/EnhancementFetcher.java
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/processor/ObjectTypeProcessor.java
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/processor/PropertyProcesser.java
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/repository/OfflineAccess.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/helper/CMSAdapterVocabulary.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/helper/MappingModelParser.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/mapping/MappingConfiguration.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/mapping/MappingEngine.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/mapping/NamingStrategy.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DObject.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DObjectAdapter.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DObjectType.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DProperty.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DPropertyDefinition.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/processor/Processor.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/processor/ProcessorProperties.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/repository/RepositoryAccess.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/repository/RepositoryAccessManager.java
incubator/stanbol/trunk/cmsadapter/web/src/main/java/org/apache/stanbol/cmsadapter/web/resources/RootResource.java
incubator/stanbol/trunk/cmsadapter/web/src/main/java/org/apache/stanbol/cmsadapter/web/utils/RestURIHelper.java
Modified: incubator/stanbol/trunk/cmsadapter/cmis/src/main/java/org/apache/stanbol/cmsadapter/cmis/processor/CMISNodeTypeLifter.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/cmis/src/main/java/org/apache/stanbol/cmsadapter/cmis/processor/CMISNodeTypeLifter.java?rev=1141552&r1=1141551&r2=1141552&view=diff
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/cmis/src/main/java/org/apache/stanbol/cmsadapter/cmis/processor/CMISNodeTypeLifter.java (original)
+++ incubator/stanbol/trunk/cmsadapter/cmis/src/main/java/org/apache/stanbol/cmsadapter/cmis/processor/CMISNodeTypeLifter.java Thu Jun 30 14:35:11 2011
@@ -90,7 +90,7 @@ public class CMISNodeTypeLifter {
}
/**
- * Extracts semantics through CMIS interface using bridge definitions
+ * Extracts semantics through CMIS interface
*
* @param mappingFileContent
* @throws Exception
@@ -195,7 +195,7 @@ public class CMISNodeTypeLifter {
private static Boolean objectPropertyCheck(org.apache.stanbol.cmsadapter.servicesapi.model.web.PropertyDefinition prop) {
PropType propType = prop.getPropertyType();
// TODO consider all object properties
- if (propType == PropType.REFERENCE || propType == PropType.PATH || propType == PropType.NAME) {
+ if (propType == PropType.REFERENCE ) {
return true;
}
return false;
Modified: incubator/stanbol/trunk/cmsadapter/cmis/src/main/java/org/apache/stanbol/cmsadapter/cmis/processor/RelationshipProcessor.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/cmis/src/main/java/org/apache/stanbol/cmsadapter/cmis/processor/RelationshipProcessor.java?rev=1141552&r1=1141551&r2=1141552&view=diff
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/cmis/src/main/java/org/apache/stanbol/cmsadapter/cmis/processor/RelationshipProcessor.java (original)
+++ incubator/stanbol/trunk/cmsadapter/cmis/src/main/java/org/apache/stanbol/cmsadapter/cmis/processor/RelationshipProcessor.java Thu Jun 30 14:35:11 2011
@@ -8,6 +8,8 @@ import org.apache.chemistry.opencmis.cli
import org.apache.chemistry.opencmis.client.api.RelationshipType;
import org.apache.chemistry.opencmis.client.api.Session;
import org.apache.chemistry.opencmis.commons.exceptions.CmisBaseException;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Service;
import org.apache.stanbol.cmsadapter.cmis.repository.CMISObjectId;
import org.apache.stanbol.cmsadapter.servicesapi.helper.OntologyResourceHelper;
import org.apache.stanbol.cmsadapter.servicesapi.mapping.MappingEngine;
@@ -19,6 +21,20 @@ import org.slf4j.LoggerFactory;
import com.hp.hpl.jena.ontology.Individual;
import com.hp.hpl.jena.ontology.OntProperty;
+/**
+ * TODO: This processer is not tested yet.
+ *
+ * This processor creates OWL object property assertions from CMIS {@link Relationship}s.
+ * Subject is the individual generated for the source object of the relationship.
+ * Property is the property generated for the type of the relationship.
+ * Object is the individual generated for the target object of the relationship.
+ *
+ * @author cihan
+ *
+ */
+
+@Service
+@Component(immediate=true)
public class RelationshipProcessor implements Processor {
private static final Logger log = LoggerFactory.getLogger(RelationshipProcessor.class);
Modified: incubator/stanbol/trunk/cmsadapter/cmis/src/main/java/org/apache/stanbol/cmsadapter/cmis/repository/CMISModelMapper.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/cmis/src/main/java/org/apache/stanbol/cmsadapter/cmis/repository/CMISModelMapper.java?rev=1141552&r1=1141551&r2=1141552&view=diff
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/cmis/src/main/java/org/apache/stanbol/cmsadapter/cmis/repository/CMISModelMapper.java (original)
+++ incubator/stanbol/trunk/cmsadapter/cmis/src/main/java/org/apache/stanbol/cmsadapter/cmis/repository/CMISModelMapper.java Thu Jun 30 14:35:11 2011
@@ -20,6 +20,13 @@ import org.apache.stanbol.cmsadapter.ser
import org.apache.stanbol.cmsadapter.servicesapi.model.web.Property;
import org.apache.stanbol.cmsadapter.servicesapi.model.web.PropertyDefinition;
+/**
+ * This class converts objects from {@linkplain org.apache.chemistry.opencmis.client.api} to objects from
+ * {@linkplain org.apache.stanbol.cmsadapter.servicesapi.model.web}
+ *
+ * @author cihan
+ *
+ */
public class CMISModelMapper {
private static final SimpleDateFormat XML_DATETIME_FORMAT = new SimpleDateFormat("yyyy-mm-dd HH:mm:ssZ");
@@ -34,7 +41,6 @@ public class CMISModelMapper {
throw new IllegalArgumentException("Expected cmis:document or cmis:folder, found "
+ object.getBaseTypeId().name());
}
-
}
private static CMSObject getCMSObjectFromDocument(Document document) {
Modified: incubator/stanbol/trunk/cmsadapter/cmis/src/main/java/org/apache/stanbol/cmsadapter/cmis/repository/CMISProperty.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/cmis/src/main/java/org/apache/stanbol/cmsadapter/cmis/repository/CMISProperty.java?rev=1141552&r1=1141551&r2=1141552&view=diff
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/cmis/src/main/java/org/apache/stanbol/cmsadapter/cmis/repository/CMISProperty.java (original)
+++ incubator/stanbol/trunk/cmsadapter/cmis/src/main/java/org/apache/stanbol/cmsadapter/cmis/repository/CMISProperty.java Thu Jun 30 14:35:11 2011
@@ -1,11 +1,7 @@
package org.apache.stanbol.cmsadapter.cmis.repository;
-//Used for properties like cmis:localname, cmis:localnamespace
public enum CMISProperty {
-// LOCAL_NAME("cmis:localname"),
-// LOCAL_NAMESPACE("cmis:localnamespace"),
- PATH("cmis:path"),
ID("cmis:id");
private final String name;
Modified: incubator/stanbol/trunk/cmsadapter/cmis/src/main/java/org/apache/stanbol/cmsadapter/cmis/repository/CMISQueryHelper.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/cmis/src/main/java/org/apache/stanbol/cmsadapter/cmis/repository/CMISQueryHelper.java?rev=1141552&r1=1141551&r2=1141552&view=diff
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/cmis/src/main/java/org/apache/stanbol/cmsadapter/cmis/repository/CMISQueryHelper.java (original)
+++ incubator/stanbol/trunk/cmsadapter/cmis/src/main/java/org/apache/stanbol/cmsadapter/cmis/repository/CMISQueryHelper.java Thu Jun 30 14:35:11 2011
@@ -6,7 +6,7 @@ public class CMISQueryHelper {
public static final String CMIS_DOCUMENT_BY_NAME = "SELECT cmis:id FROM cmis:document WHERE cmis:name = '%s'";
public static String[] getCMISIdByNameQuery(String name) {
- return new String[] {String.format(CMIS_DOCUMENT_BY_NAME, name),
+ return new String[] {String.format(CMIS_FOLDER_BY_NAME, name),
String.format(CMIS_DOCUMENT_BY_NAME, name)};
}
}
Modified: incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/mapping/DefaultNamingStrategy.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/mapping/DefaultNamingStrategy.java?rev=1141552&r1=1141551&r2=1141552&view=diff
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/mapping/DefaultNamingStrategy.java (original)
+++ incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/mapping/DefaultNamingStrategy.java Thu Jun 30 14:35:11 2011
@@ -116,21 +116,6 @@ public class DefaultNamingStrategy imple
return getAvailableResourceName(ontologyURI, candidateNames, DATA_PROPERTY_DELIMITER);
}
- @Override
- public void setRepositoryAccess(RepositoryAccess repositoryAccess) {
- this.repositoryAccess = repositoryAccess;
- }
-
- @Override
- public void setSession(Object session) {
- this.session = session;
- }
-
- @Override
- public void setOntModel(OntModel ontModel) {
- this.processedModel = ontModel;
- }
-
private String getAvailableResourceName(String ontologyURI,
List<String> candidates,
String resourceDelimiter) {
Modified: incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/mapping/MappingEngineImpl.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/mapping/MappingEngineImpl.java?rev=1141552&r1=1141551&r2=1141552&view=diff
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/mapping/MappingEngineImpl.java (original)
+++ incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/mapping/MappingEngineImpl.java Thu Jun 30 14:35:11 2011
@@ -67,11 +67,10 @@ public class MappingEngineImpl implement
private NamingStrategy namingStrategy;
@Activate
- protected void activate(final Map<?,?> properties){
- //TODO need to do something here?
+ protected void activate(final Map<?,?> properties) {
+ // TODO need to do something here?
}
-
-
+
private void runProcessors(List<Object> cmsObjects, String mode) {
Iterator<Processor> processorIterator;
synchronized (processors) {
@@ -105,6 +104,8 @@ public class MappingEngineImpl implement
new JCRNodeTypeLifter(this).lift();
} else if (connectionType.contentEquals("CMIS")) {
new CMISNodeTypeLifter(this).liftNodes();
+ } else {
+ throw new IllegalArgumentException("Connection type must be one of JCR or CMIS.");
}
} catch (RepositoryException e) {
logger.warn("Lifting error", e);
Modified: incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/processor/ClassificationObjectProcesser.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/processor/ClassificationObjectProcesser.java?rev=1141552&r1=1141551&r2=1141552&view=diff
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/processor/ClassificationObjectProcesser.java (original)
+++ incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/processor/ClassificationObjectProcesser.java Thu Jun 30 14:35:11 2011
@@ -13,6 +13,7 @@ import org.apache.felix.scr.annotations.
import org.apache.stanbol.cmsadapter.servicesapi.helper.MappingModelParser;
import org.apache.stanbol.cmsadapter.servicesapi.helper.OntologyResourceHelper;
import org.apache.stanbol.cmsadapter.servicesapi.mapping.MappingEngine;
+import org.apache.stanbol.cmsadapter.servicesapi.model.mapping.BridgeDefinitions;
import org.apache.stanbol.cmsadapter.servicesapi.model.mapping.ConceptBridge;
import org.apache.stanbol.cmsadapter.servicesapi.model.mapping.PropertyBridge;
import org.apache.stanbol.cmsadapter.servicesapi.model.mapping.SubsumptionBridge;
@@ -33,6 +34,22 @@ import org.slf4j.LoggerFactory;
import com.hp.hpl.jena.ontology.OntClass;
+/**
+ * This processor can process {@link ClassificationObject}s. On
+ * {@link #createDecoratedObjects(List, MappingEngine)} call, for each CMS Object of type
+ * {@link ClassificationObject} an OWL Class is created. Also if there is a property mapping defined in
+ * {@link BridgeDefinitions} then an instance of {@link PropertyProcesser} will be used to process these
+ * definitions. <br/>
+ * If there is a {@link SubsumptionBridge} service available, children of any {@link ClassificationObject}
+ * will be processed by subsumption processer.
+ *
+ * On {@link #deleteObjects(List, MappingEngine)} call, for each CMS Object of the type
+ * {@link ClassificationObject} the previously created resource is found and all the triples of which the
+ * resource is the subject is deleted.
+ *
+ * @author Suat
+ *
+ */
@Component(immediate = true)
@Service
@Reference(cardinality = ReferenceCardinality.MANDATORY_MULTIPLE, referenceInterface = Processor.class, policy = ReferencePolicy.DYNAMIC, bind = "bindProcessor", unbind = "unbindProcessor", name = "processor")
Modified: incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/processor/ContentObjectProcesser.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/processor/ContentObjectProcesser.java?rev=1141552&r1=1141551&r2=1141552&view=diff
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/processor/ContentObjectProcesser.java (original)
+++ incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/processor/ContentObjectProcesser.java Thu Jun 30 14:35:11 2011
@@ -30,6 +30,19 @@ import org.slf4j.LoggerFactory;
import com.hp.hpl.jena.ontology.Individual;
import com.hp.hpl.jena.ontology.OntClass;
+/**
+ * This processor can process {@link ContentObject}s. On {@link #createDecoratedObjects(List, MappingEngine)}
+ * call, for each CMS Object of type {@link ContentObject} an OWL Individual is created. Also if there is a
+ * property mapping defined in {@link BridgeDefinitions} then an instance of {@link PropertyProcesser} will be
+ * used to process these definitions. <br/>
+ *
+ * On {@link #deleteObjects(List, MappingEngine)} call, for each CMS Object of the type {@link ContentObject}
+ * the previously created resource is found and all the triples of which the resource is the subject is
+ * deleted.
+ *
+ * @author Suat
+ *
+ */
@Component(immediate = true)
@Service
public class ContentObjectProcesser extends BaseProcessor implements Processor, ProcessorProperties {
Modified: incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/processor/EnhancementFetcher.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/processor/EnhancementFetcher.java?rev=1141552&r1=1141551&r2=1141552&view=diff
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/processor/EnhancementFetcher.java (original)
+++ incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/processor/EnhancementFetcher.java Thu Jun 30 14:35:11 2011
@@ -1,9 +1,6 @@
package org.apache.stanbol.cmsadapter.core.processor;
-import java.io.ByteArrayInputStream;
-import java.nio.charset.Charset;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -18,7 +15,6 @@ import org.apache.felix.scr.annotations.
import org.apache.felix.scr.annotations.Service;
import org.apache.stanbol.cmsadapter.servicesapi.helper.CMSAdapterVocabulary;
import org.apache.stanbol.cmsadapter.servicesapi.helper.MappingModelParser;
-import org.apache.stanbol.cmsadapter.servicesapi.helper.OntologyResourceHelper;
import org.apache.stanbol.cmsadapter.servicesapi.mapping.MappingEngine;
import org.apache.stanbol.cmsadapter.servicesapi.model.mapping.BridgeDefinitions;
import org.apache.stanbol.cmsadapter.servicesapi.model.mapping.InstanceBridge;
@@ -33,31 +29,31 @@ import org.apache.stanbol.cmsadapter.ser
import org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccess;
import org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccessException;
import org.apache.stanbol.enhancer.servicesapi.Store;
-import org.apache.stanbol.enhancer.servicesapi.rdf.NamespaceEnum;
import org.osgi.service.component.ComponentContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.hp.hpl.jena.ontology.OntModel;
-import com.hp.hpl.jena.ontology.OntModelSpec;
-import com.hp.hpl.jena.rdf.model.Model;
-import com.hp.hpl.jena.rdf.model.ModelFactory;
+import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.rdf.model.ResourceFactory;
import com.hp.hpl.jena.rdf.model.Statement;
-import com.hp.hpl.jena.vocabulary.RDF;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
+/**
+ * This processer can process CMS Objects of type {@link ContentObject}. If provided ContentObject has a
+ * property with name equal to configured property
+ * <b>org.apache.stanbol.cmsadapter.core.processor.EnhancementFetcher.contentProperty</b> then the content
+ * submitted to content hub, and the individual generated for ContentObject is related to enhancement graph
+ * with {@link CMSAdapterVocabulary#CMSAD_PROPERTY_CONTENT_ITEM_REF}
+ *
+ * @author cihan
+ *
+ */
@Component(immediate = true, metatype = true)
@Service
public class EnhancementFetcher extends BaseProcessor implements Processor, ProcessorProperties {
private static final Logger logger = LoggerFactory.getLogger(EnhancementFetcher.class);
- /**
- * Prefix to identify assignment of an enhancement to a cms object.
- */
- private static final String ENHANCEMENT_PREFIX = "Enh-";
-
private static final String PROP_CONTENT_PROPERTY = "org.apache.stanbol.cmsadapter.core.processor.EnhancementFetcher.contentProperty";
@Property(name = PROP_CONTENT_PROPERTY, cardinality = 1000, value = {"content"})
private String[] contentProperties;
@@ -139,73 +135,41 @@ public class EnhancementFetcher extends
if (!content.contentEquals("")) {
try {
webResource.type(MediaType.TEXT_PLAIN_TYPE).put(content.getBytes());
+ addContentItemRelation(cmsObject.getID(),
+ engineRootResource + "metadata/" + cmsObject.getID(), engine);
} catch (Exception e) {
logger.warn("Failed to create content item for cms object: {}", cmsObject.getName());
return;
}
- webResource = client.resource(engineRootResource + "metadata/" + cmsObject.getID());
- String enh = webResource.accept("application/rdf+xml").get(String.class);
- mergeEnhancements(cmsObject, enh, engine);
-
} else {
logger.warn("Empty content for object {}", cmsObject.getName());
}
}
- private void mergeEnhancements(DObject cmsObject, String enhancements, MappingEngine engine) {
- Model enhModel = ModelFactory.createDefaultModel();
- enhModel.read(new ByteArrayInputStream(enhancements.getBytes(Charset.forName("UTF-8"))), "");
- // first remove previously added enhancements from ontology
- deleteEnhancementsOfCMSObject(Arrays.asList(new DObject[] {cmsObject}), engine);
- engine.getOntModel().add(assignCMSObjectReferencesToEnhancements(enhModel, cmsObject.getID()));
- }
-
- /**
- * Add unique reference of cms objects to each enhancement of the types <b>Enhancement,
- * EntityAnnotation</b> and <b>Text Annotation</b> to be able to delete the annotations in delete
- * operation.
- *
- * @param enhModel
- * @param reference
- * @return {@link OntModel} which contains enhancements having
- * {@code CMSAdapterVocabulary.CMSAD_RESOURCE_REF_PROP}
- */
- private OntModel assignCMSObjectReferencesToEnhancements(Model enhModel, String reference) {
- OntModel enhOntModel = ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM);
- enhOntModel.add(enhModel);
- reference = ENHANCEMENT_PREFIX + reference;
-
- String URI;
- List<String> processedURIs = new ArrayList<String>();
- List<Statement> enhs = enhOntModel.listStatements(null, RDF.type,
- ResourceFactory.createResource(NamespaceEnum.enhancer + "Enhancement")).toList();
- for (Statement stmt : enhs) {
- URI = stmt.getSubject().getURI();
- if (!processedURIs.contains(URI)) {
- stmt.getSubject().addProperty(CMSAdapterVocabulary.CMSAD_RESOURCE_REF_PROP, reference);
- processedURIs.add(URI);
- }
- }
+ private void addContentItemRelation(String cmsObjectId, String contentItemReference, MappingEngine engine) {
- enhs = enhOntModel.listStatements(null, RDF.type, NamespaceEnum.enhancer + "EntityAnnotation")
- .toList();
- for (Statement stmt : enhs) {
- URI = stmt.getSubject().getURI();
- if (!processedURIs.contains(URI)) {
- stmt.getSubject().addProperty(CMSAdapterVocabulary.CMSAD_RESOURCE_REF_PROP, reference);
- processedURIs.add(URI);
- }
+ List<Statement> resources = engine
+ .getOntModel()
+ .listStatements(null, CMSAdapterVocabulary.CMSAD_RESOURCE_REF_PROP,
+ ResourceFactory.createPlainLiteral(cmsObjectId)).toList();
+ for (Statement stmt : resources) {
+ Resource resource = stmt.getSubject();
+ resource.addProperty(CMSAdapterVocabulary.CMSAD_PROPERTY_CONTENT_ITEM_REF,
+ ResourceFactory.createResource(contentItemReference));
+ logger.debug("Added {} as content item ref to cms object with id {}", contentItemReference,
+ cmsObjectId);
}
+ }
- enhs = enhOntModel.listStatements(null, RDF.type, NamespaceEnum.enhancer + "TextAnnotation").toList();
- for (Statement stmt : enhs) {
- URI = stmt.getSubject().getURI();
- if (!processedURIs.contains(URI)) {
- stmt.getSubject().addProperty(CMSAdapterVocabulary.CMSAD_RESOURCE_REF_PROP, reference);
- processedURIs.add(URI);
- }
+ private void deleteContentItemRelation(String cmsObjectId, MappingEngine engine) {
+ List<Statement> resources = engine
+ .getOntModel()
+ .listStatements(null, CMSAdapterVocabulary.CMSAD_RESOURCE_REF_PROP,
+ ResourceFactory.createPlainLiteral(cmsObjectId)).toList();
+ for (Statement stmt : resources) {
+ engine.getOntModel().removeAll(stmt.getSubject(),
+ CMSAdapterVocabulary.CMSAD_PROPERTY_CONTENT_ITEM_REF, null);
}
- return enhOntModel;
}
private String getTextContent(DObject cmsObject) {
@@ -257,35 +221,8 @@ public class EnhancementFetcher extends
}
private void deleteEnhancementsOfCMSObject(List<DObject> cmsObjects, MappingEngine engine) {
- OntModel model = engine.getOntModel();
- OntologyResourceHelper orh = engine.getOntologyResourceHelper();
-
- List<Statement> enhs = model.listStatements(null, RDF.type,
- ResourceFactory.createResource(NamespaceEnum.enhancer + "Enhancement")).toList();
- deleteEnhancements(cmsObjects, enhs, orh);
-
- enhs = model.listStatements(null, RDF.type, NamespaceEnum.enhancer + "EntityAnnotation").toList();
- deleteEnhancements(cmsObjects, enhs, orh);
-
- enhs = model.listStatements(null, RDF.type, NamespaceEnum.enhancer + "TextAnnotation").toList();
- deleteEnhancements(cmsObjects, enhs, orh);
- }
-
- private void deleteEnhancements(List<DObject> cmsObjects, List<Statement> enhs, OntologyResourceHelper orh) {
- String enhOwner;
- String reference;
-
- for (Statement stmt : enhs) {
- Statement refStmt = stmt.getSubject().getProperty(CMSAdapterVocabulary.CMSAD_RESOURCE_REF_PROP);
- enhOwner = refStmt.getObject().asLiteral().getString();
- if (refStmt != null) {
- for (DObject cmsObject : cmsObjects) {
- reference = ENHANCEMENT_PREFIX + cmsObject.getID();
- if (enhOwner.contentEquals(reference)) {
- orh.deleteStatementsByResource(refStmt.getSubject());
- }
- }
- }
+ for (DObject cmsObject : cmsObjects) {
+ deleteContentItemRelation(cmsObject.getID(), engine);
}
}
Modified: incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/processor/ObjectTypeProcessor.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/processor/ObjectTypeProcessor.java?rev=1141552&r1=1141551&r2=1141552&view=diff
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/processor/ObjectTypeProcessor.java (original)
+++ incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/processor/ObjectTypeProcessor.java Thu Jun 30 14:35:11 2011
@@ -30,6 +30,22 @@ import com.hp.hpl.jena.rdf.model.RDFList
import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.vocabulary.OWL;
+/**
+ * This processer can process CMS Objects of type {@link ObjectTypeDefinition}.
+ * A type definition corresponds to an OWL Class and properties defined on the type corresponds to OWL datatype or OWL object properties.
+ * <br/>
+ * A property is converted to an OWL object property if it is type is amongst following:
+ * <ul>
+ * <li>{@link PropType#NAME}</li>
+ * <li>{@link PropType#PATH}</li>
+ * <li>{@link PropType#REFERENCE}</li>
+ * </ul>
+ * Otherwise the property is converted to an OWL datatype property.
+ * <br/>
+ *
+ * @author Suat
+ *
+ */
@Component(immediate = true)
@Service
public class ObjectTypeProcessor implements Processor, ProcessorProperties {
Modified: incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/processor/PropertyProcesser.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/processor/PropertyProcesser.java?rev=1141552&r1=1141551&r2=1141552&view=diff
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/processor/PropertyProcesser.java (original)
+++ incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/processor/PropertyProcesser.java Thu Jun 30 14:35:11 2011
@@ -8,10 +8,13 @@ import org.apache.stanbol.cmsadapter.ser
import org.apache.stanbol.cmsadapter.servicesapi.model.mapping.PropertyBridge;
import org.apache.stanbol.cmsadapter.servicesapi.model.web.AnnotationType;
import org.apache.stanbol.cmsadapter.servicesapi.model.web.CMSObject;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.ClassificationObject;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.ContentObject;
import org.apache.stanbol.cmsadapter.servicesapi.model.web.PropType;
import org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated.DObject;
import org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated.DProperty;
import org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated.DPropertyDefinition;
+import org.apache.stanbol.cmsadapter.servicesapi.processor.Processor;
import org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccess;
import org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccessException;
import org.slf4j.Logger;
@@ -26,6 +29,31 @@ import com.hp.hpl.jena.ontology.OntClass
import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.ontology.OntResource;
+/**
+ * This class does not implement {@link Processor} interface. However other processors uses this class to
+ * process instances of {@link PropertyBridge}s. If the property belongs to a {@link ContentObject} the
+ * following annotations are processed.
+ * <ul>
+ * <li>{@link AnnotationType#INSTANCE_OF}: The OWL Individual that represents source ClassificationObject's
+ * type becomes the OWL Class that represents target value of the property.</li>
+ * <li>{@link AnnotationType#FUNCTIONAL}: The property becomes a functional property.</li>
+ * <li>{@link AnnotationType#SYMMETRIC}: The property becomes a symmetric property.</li>
+ * <li>{@link AnnotationType#TRANSITIVE}: The property becomes a transitive property.</li>
+ * <li>{@link AnnotationType#INVERSE_FUNCTIONAL}: The property becomes an inverse functional property.</li>
+ * </ul>
+ * If the property belongs to a {@link ClassificationObject} the following annotations are processed.
+ * <ul>
+ * <li>{@link AnnotationType#SUBSUMPTION}: The OWL class that represents target ClassificationObject is
+ * considered as subclass of OWL Class that represents source ClassificationObject</li>
+ * <li>{@link AnnotationType#EQUIVALENT_CLASS} The OWL class that represents target ClassificationObject is
+ * considered as equivalent of OWL Class that represents source ClassificationObject</li>
+ * <li>{@link AnnotationType#DISJOINT_WITH} The OWL class that represents source ClassificationObject is
+ * considered as disjoint with OWL Class that represents target ClassificationObject</li>
+ * </ul>
+ *
+ * @author Suat
+ *
+ */
public class PropertyProcesser {
private static final Logger logger = LoggerFactory.getLogger(PropertyProcesser.class);
@@ -167,7 +195,8 @@ public class PropertyProcesser {
}
String propName = propDef.getName();
String propFullName = propDef.getNamespace() + ":" + propDef.getName();
- if (propName.equals(predicateName) || propName.contains(predicateName) || propFullName.equals(predicateName)) {
+ if (propName.equals(predicateName) || propName.contains(predicateName)
+ || propFullName.equals(predicateName)) {
AnnotationType annotation = getAnnotation(propertyBridge.getPropertyAnnotation());
processContentObjectProperty(property, propDef, contentObject, individual, annotation, engine);
// property found break the loop
Modified: incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/repository/OfflineAccess.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/repository/OfflineAccess.java?rev=1141552&r1=1141551&r2=1141552&view=diff
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/repository/OfflineAccess.java (original)
+++ incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/repository/OfflineAccess.java Thu Jun 30 14:35:11 2011
@@ -16,6 +16,16 @@ import org.apache.stanbol.cmsadapter.ser
import org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccess;
import org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccessException;
+/**
+ * This class is used for mocking a {@link RepositoryAccess} service when there is not possible to access a
+ * remote CMS Repository. Instead when initialized with a list of CMS Objects, Offline Access acts as a
+ * repository, providing an implementation of {@link RepositoryAccess} so that there no separate interface for
+ * offline processing.
+ *
+ *
+ * @author cihan
+ *
+ */
public class OfflineAccess implements RepositoryAccess {
MultiValueMap nameMap = new MultiValueMap();
Modified: incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/helper/CMSAdapterVocabulary.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/helper/CMSAdapterVocabulary.java?rev=1141552&r1=1141551&r2=1141552&view=diff
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/helper/CMSAdapterVocabulary.java (original)
+++ incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/helper/CMSAdapterVocabulary.java Thu Jun 30 14:35:11 2011
@@ -42,6 +42,13 @@ public class CMSAdapterVocabulary {
public static final Property CMSAD_PROPERTY_SOURCE_OBJECT_PROP = property(CMS_ADAPTER_VOCABULARY_URI,
CMSAD_PROPERTY_SOURCE_OBJECT_PROP_NAME);
+ /**
+ * Property to access metadata of a specific cms object.
+ */
+ private static final String CMSAD_PROPERTY_CONTENT_ITEM_REF_NAME = "contentItemRef";
+ public static final Property CMSAD_PROPERTY_CONTENT_ITEM_REF = property(CMS_ADAPTER_VOCABULARY_URI,
+ CMSAD_PROPERTY_CONTENT_ITEM_REF_NAME);
+
/*
* Properties to store connection info in the ontology
*/
Modified: incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/helper/MappingModelParser.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/helper/MappingModelParser.java?rev=1141552&r1=1141551&r2=1141552&view=diff
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/helper/MappingModelParser.java (original)
+++ incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/helper/MappingModelParser.java Thu Jun 30 14:35:11 2011
@@ -25,6 +25,11 @@ import org.slf4j.LoggerFactory;
public class MappingModelParser {
private static final Logger logger = LoggerFactory.getLogger(MappingModelParser.class);
+ /**
+ * Parses an XML document and returns corresponding {@link BridgeDefinitions} instance.
+ * @param xmlContent String representation of XML Document.
+ * @return {@link BridgeDefinitions} instance or null if unsuccessful.
+ */
public static BridgeDefinitions deserializeObject(String xmlContent) {
BridgeDefinitions bridgeDefinitions = null;
@@ -41,6 +46,11 @@ public class MappingModelParser {
return bridgeDefinitions;
}
+ /**
+ * Converts an object to its XML form.
+ * @param object Any object that can be created by {@link ObjectFactory}
+ * @return XML Document as a string.
+ */
public static String serializeObject(Object object) {
String bridgeDefinitions = null;
Modified: incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/mapping/MappingConfiguration.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/mapping/MappingConfiguration.java?rev=1141552&r1=1141551&r2=1141552&view=diff
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/mapping/MappingConfiguration.java (original)
+++ incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/mapping/MappingConfiguration.java Thu Jun 30 14:35:11 2011
@@ -2,34 +2,114 @@ package org.apache.stanbol.cmsadapter.se
import java.util.List;
+import org.apache.stanbol.cmsadapter.servicesapi.helper.OntologyResourceHelper;
import org.apache.stanbol.cmsadapter.servicesapi.model.mapping.BridgeDefinitions;
import org.apache.stanbol.cmsadapter.servicesapi.model.web.ConnectionInfo;
import org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated.AdapterMode;
import com.hp.hpl.jena.ontology.OntModel;
+/**
+ * {@link MappingConfiguration} describes an environment where an ontology extraction operation from CMS takes
+ * place.
+ *
+ * @author Suat
+ *
+ */
public interface MappingConfiguration {
+ /**
+ * Changes ontology model that will be generated by the extraction process.
+ * Using this function after the processors started may result in loss of triples.
+ * @param ontModel
+ * New Ontology
+ */
void setOntModel(OntModel ontModel);
-
+
+ /**
+ * Method to retrieve ontology model, although modifications to ontology through this model is discouraged
+ * (see {@link OntologyResourceHelper}), any processor can access and modify this model.
+ *
+ * @return Ontology that is generated through extraction process.
+ */
OntModel getOntModel();
-
+
+ /**
+ * Method to change or set {@link BridgeDefinitions} of the configuration.
+ *
+ * @param bridgeDefinitions
+ * {@link BridgeDefinitions} to be used in the extraction process.
+ */
void setBridgeDefinitions(BridgeDefinitions bridgeDefinitions);
-
+
+ /**
+ * Method to retrieve {@link BridgeDefinitions} to be used in the extraction process.
+ *
+ * @return {@link BridgeDefinitions} instance.
+ */
BridgeDefinitions getBridgeDefinitions();
-
+
+ /**
+ * Method to change or set {@link AdapterMode} of the configuration. {@link AdapterMode}s are used to tune
+ * when to access a remote repository during extraction process. For detailed explanation see
+ * {@link AdapterMode}
+ *
+ * @param adapterMode
+ */
void setAdapterMode(AdapterMode adapterMode);
-
+
+ /**
+ * Method to retrieve {@link AdapterMode} of the configuration.
+ *
+ * @return
+ */
AdapterMode getAdapterMode();
-
+
+ /**
+ * Method to change or set the URI of the ontology being generated. Changing this configuration during
+ * extraction process may result in inconsistent ontology. The extracted ontology will be automatically
+ * saved to persistence store by by this URI.
+ *
+ * @param ontologyURI
+ * URI of the ontology.
+ */
void setOntologyURI(String ontologyURI);
-
+
+ /**
+ * Method to retrieve URI of the ontology.
+ *
+ * @return URI of the ontology.
+ */
String getOntologyURI();
-
+
+ /**
+ * Method to change or set {@link ConnectionInfo} of the mapping configuration. ConnectionInfo is used for
+ * accessing the content repository in <b>TOLERATED OFFLINE</b> and <b>ONLINE</b> {@link AdapterMode}s.
+ *
+ * @param connectionInfo
+ */
void setConnectionInfo(ConnectionInfo connectionInfo);
-
+
+ /**
+ * Method to retrieve {@link ConnectionInfo} of the mapping configuration.
+ *
+ * @return
+ */
ConnectionInfo getConnectionInfo();
-
+
+ /**
+ * Method to change or set CMS Objects of the mapping configuration. If {@link AdapterMode} is
+ * <b>ONLINE</b> there is no need to set these objects. They will be retrieved from a CMS repository using
+ * {@link ConnectionInfo} supplied to this configuration. </br>An Interface for a common CMS Object is not yet
+ * defined. So {@link Object} is used as type.
+ *
+ * @param objects
+ * A list of objects to be processed by processors during the extraction.
+ */
void setObjects(List<Object> objects);
-
+
+ /**
+ * Method to retrieve CMS OBjects of the configuration.
+ * @return List of CMS objects
+ */
List<Object> getObjects();
}
Modified: incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/mapping/MappingEngine.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/mapping/MappingEngine.java?rev=1141552&r1=1141551&r2=1141552&view=diff
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/mapping/MappingEngine.java (original)
+++ incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/mapping/MappingEngine.java Thu Jun 30 14:35:11 2011
@@ -9,30 +9,114 @@ import org.apache.stanbol.cmsadapter.ser
import com.hp.hpl.jena.ontology.OntModel;
+/**
+ * {@link MappingEngine} is a wrapper that governs a mapping environment and able to start extraction process
+ * on request.<br/>
+ * Also provides two helper classer to processors that can reduce the work done by each processor. These
+ * helper classes are:
+ * <ol>
+ * <li>
+ * {@link DObjectAdapter}: Processor may want to access some properties that are not listed in plain CMS
+ * models from package {@linkplain org.apache.stanbol.cmsadapter.servicesapi.model.web}. This adapter can wrap
+ * plain CMS Objects into Decorated CMS Objects which can silently access a remote repository an fetch data
+ * not provided by plain CMS Objects.</li>
+ * <li>
+ * {@link OntologyResourceHelper}: When processors are extract new triples, they need to create OWL classes,
+ * individuals and properties. When these entity directly corresponds to a CMS node, type or property, need
+ * for a generic mapper that maps OWL entities to CMS objects arise. Using {@link OntologyResourceHelper}
+ * processors can create the OWL entities that corresponds any CMS object without having to keeping track of
+ * the created classes</li>
+ * </ol>
+ *
+ *
+ * @author Suat
+ *
+ */
public interface MappingEngine {
+ /**
+ * When extraction process includes {@link BridgeDefinitions} (i.e. registering a new bridge definition or
+ * updating an existing one), this method is called. This function necessarily accesses a CMS repository.
+ *
+ * @param conf
+ * Configuration that defines mapping/extraction environment.
+ * @throws RepositoryAccessException
+ *
+ *
+ */
void mapCR(MappingConfiguration conf) throws RepositoryAccessException;
+ /**
+ * This method is called when a list of CMS objects are posted for lifting for the first time.
+ *
+ * @param conf
+ * Configuration that defines mapping/extraction environment.
+ */
void createModel(MappingConfiguration conf);
+ /**
+ * This method is called when a list of previously submitted CMS objects are posted for updating.
+ *
+ * @param conf
+ * Configuration that defines mapping/extraction environment.
+ */
void updateModel(MappingConfiguration conf);
+ /**
+ * This method is called when a list of previously submitted CMS objects are posted for removal. After
+ * execution all processors are expected to delete previously generated triples by themselves from the
+ * extracted ontology model.
+ *
+ * @param conf
+ * Configuration that defines mapping/extraction environment.
+ */
void deleteModel(MappingConfiguration conf);
+ /**
+ *
+ * @return The URI of the ontology which will be generated in lifting process.
+ */
String getOntologyURI();
-
+
+ /**
+ *
+ * @return Ontology which is being generated in the lifting process.
+ */
OntModel getOntModel();
+ /**
+ * Getter for {@link DObjectAdapter} in this lifting context.
+ *
+ */
DObjectAdapter getDObjectAdapter();
+ /**
+ * Getter for {@link OntologyResourceHelper} in this lifting context.
+ *
+ */
OntologyResourceHelper getOntologyResourceHelper();
+ /**
+ * Getter for CMS Session in this lifting context.
+ */
Object getSession();
+ /**
+ * Getter for {@link BridgeDefinitions} (if any) in this lifting context.
+ */
BridgeDefinitions getBridgeDefinitions();
+ /**
+ * Getter for {@link RepositoryAccessManager} in this lifting context.
+ */
RepositoryAccessManager getRepositoryAccessManager();
-
+
+ /**
+ * Getter for {@link RepositoryAccess} in this lifting context.
+ */
RepositoryAccess getRepositoryAccess();
-
+
+ /**
+ * Getter for {@link NamingStrategy} in this lifting context.
+ */
NamingStrategy getNamingStrategy();
}
Modified: incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/mapping/NamingStrategy.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/mapping/NamingStrategy.java?rev=1141552&r1=1141551&r2=1141552&view=diff
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/mapping/NamingStrategy.java (original)
+++ incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/mapping/NamingStrategy.java Thu Jun 30 14:35:11 2011
@@ -3,11 +3,15 @@ package org.apache.stanbol.cmsadapter.se
import org.apache.stanbol.cmsadapter.servicesapi.model.web.CMSObject;
import org.apache.stanbol.cmsadapter.servicesapi.model.web.ObjectTypeDefinition;
import org.apache.stanbol.cmsadapter.servicesapi.model.web.PropertyDefinition;
-import org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccess;
-import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.rdf.model.RDFList;
+/**
+ * Represents how different type of OWL entities are named in an extraction context.
+ *
+ * @author Suat
+ *
+ */
public interface NamingStrategy {
String getClassName(String ontologyURI, CMSObject cmsObject);
@@ -32,10 +36,4 @@ public interface NamingStrategy {
String getUnionClassURI(String ontologyURI, RDFList list);
- void setRepositoryAccess(RepositoryAccess repositoryAccess);
-
- void setSession(Object session);
-
- void setOntModel(OntModel ontModel);
-
}
Modified: incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DObject.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DObject.java?rev=1141552&r1=1141551&r2=1141552&view=diff
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DObject.java (original)
+++ incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DObject.java Thu Jun 30 14:35:11 2011
@@ -5,34 +5,80 @@ import java.util.List;
import org.apache.stanbol.cmsadapter.servicesapi.model.web.CMSObject;
import org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccessException;
+/**
+ * Decorated form of {@link CMSObject}. While {@link CMSObject} is completely separated from the repository it
+ * is generated, DObject is able to reconnect to the repository and fetch any data that is not present in
+ * {@link CMSObject}. </br> Details of when the repository is determined by {@link AdapterMode}s. See
+ * {@link DObjectAdapter} and {@link AdapterMode} for more details.
+ *
+ * @author cihan
+ *
+ */
public interface DObject {
- String getID();
-
- String getPath();
-
- String getName();
-
- String getNamespace();
-
- CMSObject getInstance();
-
- List<DObject> getChildren() throws RepositoryAccessException;
-
- /**
- * Fetches parent of the item from CMS repository.
- * @return parent of the object, null in <b>OFFLINE</b> mode.
- * @throws RepositoryAccessException If repository can not be accessed in <b>ONLINE</b> mode.
- */
- DObject getParent() throws RepositoryAccessException;
-
- /**
- * Fetches object type of the item from CMS repository.
- * @return Object type of the object, null in <b>OFFLINE</b> mode.
- * @throws RepositoryAccessException If repository can not be accessed in <b>ONLINE</b> mode.
- */
- DObjectType getObjectType() throws RepositoryAccessException;
-
- List<DProperty> getProperties() throws RepositoryAccessException;
-
+ /**
+ *
+ * @return Unique identifier of underlying CMSObject.
+ */
+ String getID();
+
+ /**
+ *
+ * @return Path of the underlying CMSObject, If more than one path is
+ * present returns the first path.
+ */
+ String getPath();
+
+ /**
+ *
+ * @return Localname of the underlying CMSObject.
+ */
+ String getName();
+
+ /**
+ *
+ * @return Namespace of the underlying CMSObject.
+ */
+ String getNamespace();
+
+ /**
+ *
+ * @return Underlying CMSObject.
+ */
+ CMSObject getInstance();
+
+ /**
+ *
+ * @return Direct children of the CMS object, wrapped as {@link DObject}s .May return null in <b>TOLERATED_OFFLINE</b> or <b>STRICT_OFFLINE</b> mode.
+ * @throws RepositoryAccessException
+ * If repository can not be accessed in <b>ONLINE</b> mode.
+ */
+ List<DObject> getChildren() throws RepositoryAccessException;
+
+ /**
+ * Fetches parent of the item from CMS repository.
+ *
+ * @return parent of the object wrapped as {@link DObject} .May return null in <b>TOLERATED_OFFLINE</b> or <b>STRICT_OFFLINE</b> mode.
+ * @throws RepositoryAccessException
+ * If repository can not be accessed in <b>ONLINE</b> mode.
+ */
+ DObject getParent() throws RepositoryAccessException;
+
+ /**
+ * Fetches object type of the item from CMS repository.
+ *
+ * @return Object type of the object wrapped as {@link DObjectType} .May return null in <b>TOLERATED_OFFLINE</b> or <b>STRICT_OFFLINE</b> mode.
+ * @throws RepositoryAccessException
+ * If repository can not be accessed in <b>ONLINE</b> mode.
+ */
+ DObjectType getObjectType() throws RepositoryAccessException;
+
+ /**
+ *
+ * @return Properties of the CMS object wrapped as {@link DProperty} .May return null in <b>TOLERATED_OFFLINE</b> or <b>STRICT_OFFLINE</b> mode.
+ * @throws RepositoryAccessException
+ * If repository can not be accessed in <b>ONLINE</b> mode.
+ */
+ List<DProperty> getProperties() throws RepositoryAccessException;
+
}
Modified: incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DObjectAdapter.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DObjectAdapter.java?rev=1141552&r1=1141551&r2=1141552&view=diff
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DObjectAdapter.java (original)
+++ incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DObjectAdapter.java Thu Jun 30 14:35:11 2011
@@ -5,8 +5,16 @@ import org.apache.stanbol.cmsadapter.ser
import org.apache.stanbol.cmsadapter.servicesapi.model.web.Property;
import org.apache.stanbol.cmsadapter.servicesapi.model.web.PropertyDefinition;
+/**
+ * Adapter Class for converting CMS model objects to Decorated CMS objects.
+ * The former group has no access to the original CMS repository they are extracted from.
+ * The latter can be configured to access to the repository if needed.
+ * @author cihan
+ *
+ */
public interface DObjectAdapter {
+
DObject wrapAsDObject(CMSObject node);
DObjectType wrapAsDObjectType(ObjectTypeDefinition definition);
@@ -15,6 +23,10 @@ public interface DObjectAdapter {
DProperty wrapAsDProperty(Property property);
+ /**
+ * Session object to connect Remote CMS repository.
+ * @return
+ */
Object getSession();
/**
@@ -22,7 +34,6 @@ public interface DObjectAdapter {
* faced.
*
* @param mode
- * @return
*/
void setMode(AdapterMode mode);
Modified: incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DObjectType.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DObjectType.java?rev=1141552&r1=1141551&r2=1141552&view=diff
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DObjectType.java (original)
+++ incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DObjectType.java Thu Jun 30 14:35:11 2011
@@ -2,23 +2,68 @@ package org.apache.stanbol.cmsadapter.se
import java.util.List;
+import org.apache.chemistry.opencmis.commons.definitions.TypeDefinition;
import org.apache.stanbol.cmsadapter.servicesapi.model.web.ObjectTypeDefinition;
import org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccessException;
+/**
+ * Decorated form of {@link ObjectTypeDefinition}. While {@link ObjectTypeDefinition} is completely separated
+ * from the repository it is generated, {@link DObjectType} is able to reconnect to the repository and fetch
+ * any data that is not present in {@link ObjectTypeDefinition}. </br> Details of when the repository is
+ * determined by {@link AdapterMode}s. See {@link DObjectAdapter} and {@link AdapterMode} for more details.
+ *
+ * @author cihan
+ *
+ */
public interface DObjectType {
- String getID();
-
- String getName();
-
- String getNamespace();
-
- List<DPropertyDefinition> getPropertyDefinitions() throws RepositoryAccessException;
-
- List<DObjectType> getParentDefinitions() throws RepositoryAccessException;
-
- List<DObjectType> getChildDefinitions() throws RepositoryAccessException;
-
- ObjectTypeDefinition getInstance();
-
+ /**
+ *
+ * @return Unique identifier of underlying {@link ObjectTypeDefinition}
+ */
+ String getID();
+
+ /**
+ *
+ * @return Localname of underlying {@link ObjectTypeDefinition}
+ *
+ */
+ String getName();
+
+ /**
+ *
+ * @return Namespace of underlying {@link ObjectTypeDefinition}
+ */
+ String getNamespace();
+
+ /**
+ *
+ * @return Property definitions of underlying {@link ObjectTypeDefinition}, wrapped as {@link DPropertyDefinition}
+ * @throws RepositoryAccessException
+ * If repository can not be accessed in <b>ONLINE</b> mode.
+ */
+ List<DPropertyDefinition> getPropertyDefinitions() throws RepositoryAccessException;
+
+ /**
+ *
+ * @return Parent type definitions of underlying {@link ObjectTypeDefinition}, wrapped as {@link DObjectType}
+ * @throws RepositoryAccessException
+ * If repository can not be accessed in <b>ONLINE</b> mode.
+ */
+ List<DObjectType> getParentDefinitions() throws RepositoryAccessException;
+
+ /**
+ *
+ * @return Child type definitions of underlying {@link ObjectTypeDefinition}, wrapped as {@link DObjectType}
+ * @throws RepositoryAccessException
+ * If repository can not be accessed in <b>ONLINE</b> mode.
+ */
+ List<DObjectType> getChildDefinitions() throws RepositoryAccessException;
+
+ /**
+ *
+ * @return Underlying {@link ObjectTypeDefinition}
+ */
+ ObjectTypeDefinition getInstance();
+
}
Modified: incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DProperty.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DProperty.java?rev=1141552&r1=1141551&r2=1141552&view=diff
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DProperty.java (original)
+++ incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DProperty.java Thu Jun 30 14:35:11 2011
@@ -5,26 +5,52 @@ import java.util.List;
import org.apache.stanbol.cmsadapter.servicesapi.model.web.Property;
import org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccessException;
+/**
+ * Decorated form of {@link Property}. While {@link Property} is completely separated from the repository it
+ * is generated, {@link DProperty} is able to reconnect to the repository and fetch any data that is not
+ * present in {@link Property}. </br> Details of when the repository is determined by {@link AdapterMode}s.
+ * See {@link DObjectAdapter} and {@link AdapterMode} for more details.
+ *
+ * @author cihan
+ *
+ */
public interface DProperty {
+ /**
+ *
+ * @return Name of the underlying {@link Property}.
+ *
+ */
String getName();
/**
*
- * @return Property definition of property, null if <b>STRICT_OFFLINE</b> mode.
- * @throws RepositoryAccessException if can not access repository in <b>ONLINE</> mode.
+ * @return In which property definition this property is defined, wrapped as {@link DObject} .May return
+ * null in <b>TOLERATED_OFFLINE</b> or <b>STRICT_OFFLINE</b> mode.
+ * @throws RepositoryAccessException
+ * if can not access repository in <b>ONLINE</> mode.
*/
DPropertyDefinition getDefinition() throws RepositoryAccessException;
/**
*
- * @return source object of property, null if <b>STRICT_OFFLINE</b> mode.
- * @throws RepositoryAccessException if can not access repository in <b>ONLINE</> mode.
+ * @return CMS object to which this property belongs, wrapped as {@link DObject}, .May return null in
+ * <b>TOLERATED_OFFLINE</b> or <b>STRICT_OFFLINE</b> mode.
+ * @throws RepositoryAccessException
+ * if can not access repository in <b>ONLINE</> mode.
*/
DObject getSourceObject() throws RepositoryAccessException;
+ /**
+ *
+ * @return Property values in string representation.
+ */
List<String> getValue();
+ /**
+ *
+ * @return Underlying {@link Property}
+ */
Property getInstance();
}
Modified: incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DPropertyDefinition.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DPropertyDefinition.java?rev=1141552&r1=1141551&r2=1141552&view=diff
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DPropertyDefinition.java (original)
+++ incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DPropertyDefinition.java Thu Jun 30 14:35:11 2011
@@ -7,6 +7,11 @@ import org.apache.stanbol.cmsadapter.ser
import org.apache.stanbol.cmsadapter.servicesapi.model.web.PropType;
import org.apache.stanbol.cmsadapter.servicesapi.model.web.PropertyDefinition;
+/**
+ *
+ * @author cihan
+ *
+ */
public interface DPropertyDefinition {
String getUniqueRef();
Modified: incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/processor/Processor.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/processor/Processor.java?rev=1141552&r1=1141551&r2=1141552&view=diff
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/processor/Processor.java (original)
+++ incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/processor/Processor.java Thu Jun 30 14:35:11 2011
@@ -4,10 +4,34 @@ import java.util.List;
import org.apache.stanbol.cmsadapter.servicesapi.mapping.MappingEngine;
+/**
+ * An extractor which is responsible for creation and deletion of triples.
+ * With the same list of CMS objects and mapping environment a processor is expected to
+ * be able to delete all the triples it generated after successive calls of
+ * {@link #createObjects(List, MappingEngine)} and {@linkplain #deleteObjects(List, MappingEngine)}
+ * @author cihan
+ *
+ */
public interface Processor {
+ /**
+ * Method for determining if the processor can process the specified CMS object.
+ * @param cmsObject
+ * @return true if the CMS object can be processed.
+ */
Boolean canProcess(Object cmsObject);
+ /**
+ * Creates extracted triples from the provided CMS objects.
+ * The ontology should be available through <b>engine</b> parameter.
+ * @param objects a list of CMS objects to process
+ * @param engine
+ */
void createObjects(List<Object> objects, MappingEngine engine);
+ /**
+ * Deletes previously extracted triples from the provided CMS objects, by this processor.
+ * @param objects a list of CMS objects to process
+ * @param engine
+ */
void deleteObjects(List<Object> objects, MappingEngine engine);
}
Modified: incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/processor/ProcessorProperties.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/processor/ProcessorProperties.java?rev=1141552&r1=1141551&r2=1141552&view=diff
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/processor/ProcessorProperties.java (original)
+++ incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/processor/ProcessorProperties.java Thu Jun 30 14:35:11 2011
@@ -2,6 +2,11 @@ package org.apache.stanbol.cmsadapter.se
import java.util.Map;
+/**
+ * Implementors of this Interface can override their default processing order.
+ * @author cihan
+ *
+ */
public interface ProcessorProperties {
String PROCESSING_ORDER = "org.apache.stanbol.cmsadapter.servicesapi.processor.processing_order";
Modified: incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/repository/RepositoryAccess.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/repository/RepositoryAccess.java?rev=1141552&r1=1141551&r2=1141552&view=diff
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/repository/RepositoryAccess.java (original)
+++ incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/repository/RepositoryAccess.java Thu Jun 30 14:35:11 2011
@@ -133,28 +133,144 @@ public interface RepositoryAccess {
*/
CMSObject getFirstNodeByName(String name, ConnectionInfo connectionInfo) throws RepositoryAccessException;
+ /**
+ * Method to retrieve children of a specific node. Uses existing connection.
+ *
+ * @param node
+ * @param session
+ * An open connection, ready to access repository.
+ * @return list of children of the specified node as {@link CMSObject}s
+ * @throws RepositoryAccessException
+ * If repository is not accessible or <b>node</b> can not be found.
+ */
List<CMSObject> getChildren(CMSObject node, Object session) throws RepositoryAccessException;
+ /**
+ * Method to retrieve an {@link ObjectTypeDefinition}, given its reference. Uses existing connection.
+ *
+ * @param typeRef
+ * Unique identifier of the type in the repository.
+ * @param session
+ * An open connection, ready to access repository.
+ * @return type definition identified by <b>typeRef</b> as {@link ObjectTypeDefinition}
+ * @throws RepositoryAccessException
+ * If repository is not accessible or <b>node</b> can not be found.
+ */
ObjectTypeDefinition getObjectTypeDefinition(String typeRef, Object session) throws RepositoryAccessException;
+ /**
+ * Method to retrieve properties of a CMS object. Uses an existing connection.
+ *
+ * @param node
+ * A {@link CMSObject} that represents a CMS object in a repository.
+ * @param session
+ * An open connection, ready to access repository.
+ * @return list of properties of the CMS object, as {@link Property}
+ * @throws RepositoryAccessException
+ * If repository is not accessible or <b>node</b> can not be found.
+ */
List<Property> getProperties(CMSObject node, Object session) throws RepositoryAccessException;
+ /**
+ * Method to retrieve property definitions of a specific type. Uses an existing connection.
+ *
+ * @param instance
+ * @param session
+ * An open connection, ready to access repository.
+ * @return list of property definitions of the type, as {@link PropertyDefinition}
+ * @throws RepositoryAccessException
+ * If repository is not accessible or <b>instance</b> can not be found.
+ */
List<PropertyDefinition> getPropertyDefinitions(ObjectTypeDefinition instance, Object session) throws RepositoryAccessException;
+ /**
+ * Method to retrieve parent type definitions of a specific type definition. Uses an existing connection.
+ *
+ * @param instance
+ * @param session
+ * An open connection, ready to access repository.
+ * @return list of type definitions as {@link ObjectTypeDefinition}
+ * @throws RepositoryAccessException
+ * If repository is not accessible or <b>instance</b> can not be found.
+ */
List<ObjectTypeDefinition> getParentTypeDefinitions(ObjectTypeDefinition instance, Object session) throws RepositoryAccessException;
+ /**
+ * Method to retrieve child type definitions of a specific type definition. Uses an existing connection.
+ *
+ * @param instance
+ * @param session
+ * An open connection, ready to access repository.
+ * @return list of type definitions, as {@link ObjectTypeDefinition}
+ * @throws RepositoryAccessException
+ * If repository is not accessible or <b>instance</b> can not be found.
+ */
List<ObjectTypeDefinition> getChildObjectTypeDefinitions(ObjectTypeDefinition instance, Object session) throws RepositoryAccessException;
+ /**
+ * Method to get the CMS object which has <b>instance</b> as a property. Uses an existing connection.
+ *
+ * @param instance
+ * @param session
+ * An open connection, ready to access repository.
+ * @return CMS object, as a {@link CMSObject}
+ * @throws RepositoryAccessException
+ * If repository is not accessible or <b>instance</b> can not be found.
+ */
CMSObject getContainerObject(Property instance, Object session) throws RepositoryAccessException;
+ /**
+ * Method to get property definition of a property that belongs to a CMS object.
+ *
+ * @param instance
+ * @param session
+ * An open connection, ready to access repository.
+ * @return Property definition of the <b>instance</b>, as a {@link PropertyDefinition}
+ * @throws RepositoryAccessException
+ * If repository is not accessible or <b>instance</b> can not be found.
+ *
+ */
PropertyDefinition getPropertyDefinition(Property instance, Object session) throws RepositoryAccessException;
+ /**
+ * Method to resolve namespace prefixes used by CMS repository. Uses an existing connection.
+ *
+ * @param prefix
+ * Prefix to be resolved.
+ * @param session
+ * An open connection, ready to access repository.
+ * @return full URI of the namespace
+ * @throws RepositoryAccessException
+ * If repository is not accessible or <b>prefix</b> can not be resolved.
+ */
String getNamespaceURI(String prefix, Object session) throws RepositoryAccessException;
+ /**
+ * Method to retrieve parent of a CMS node.
+ *
+ * @param instance
+ * @param session
+ * An open connection, ready to access repository.
+ * @return parent of the node, as a {@link CMSObject}
+ * @throws RepositoryAccessException
+ * If repository is not accessible or <b>prefix</b> can not be resolved.
+ */
+ CMSObject getParentByNode(CMSObject instance, Object session) throws RepositoryAccessException;
+
+ /**
+ *
+ * @param connectionInfo
+ * @return true if the {@link RepositoryAccess} instance can connect to repository with the given
+ * <b>connectionInfo</b>
+ */
boolean canRetrieve(ConnectionInfo connectionInfo);
+ /**
+ *
+ * @param session
+ * @return true if the {@link RepositoryAccess} instance can connect to repository with the given
+ * <b>session</b>
+ */
boolean canRetrieve(Object session);
- CMSObject getParentByNode(CMSObject instance, Object session) throws RepositoryAccessException;
-
}
Modified: incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/repository/RepositoryAccessManager.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/repository/RepositoryAccessManager.java?rev=1141552&r1=1141551&r2=1141552&view=diff
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/repository/RepositoryAccessManager.java (original)
+++ incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/repository/RepositoryAccessManager.java Thu Jun 30 14:35:11 2011
@@ -2,11 +2,31 @@ package org.apache.stanbol.cmsadapter.se
import org.apache.stanbol.cmsadapter.servicesapi.model.web.ConnectionInfo;
+/**
+ * This class is responsible for retrieving a suitable accessor when a
+ * session or connection description is given.
+ *
+ * @author cihan
+ *
+ */
public interface RepositoryAccessManager {
- RepositoryAccess getRepositoryAccessor(ConnectionInfo connectionInfo);
-
- RepositoryAccess getRepositoryAccess(Object session);
-
-
+ /**
+ *
+ * @param connectionInfo
+ * @return Any suitable {@link RepositoryAccess} instance that can connect to the
+ * CMS repository described in <b>connectionInfo</b> parameter or null if no suitable
+ * accessor can be found.
+ */
+ RepositoryAccess getRepositoryAccessor(ConnectionInfo connectionInfo);
+
+ /**
+ *
+ * @param session
+ * @return Any suitable {@link RepositoryAccess} instance that can connect to the
+ * CMS repository through session given in <b>session</b> parameter or null if no suitable
+ * accessor can be found.
+ */
+ RepositoryAccess getRepositoryAccess(Object session);
+
}
Modified: incubator/stanbol/trunk/cmsadapter/web/src/main/java/org/apache/stanbol/cmsadapter/web/resources/RootResource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/web/src/main/java/org/apache/stanbol/cmsadapter/web/resources/RootResource.java?rev=1141552&r1=1141551&r2=1141552&view=diff
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/web/src/main/java/org/apache/stanbol/cmsadapter/web/resources/RootResource.java (original)
+++ incubator/stanbol/trunk/cmsadapter/web/src/main/java/org/apache/stanbol/cmsadapter/web/resources/RootResource.java Thu Jun 30 14:35:11 2011
@@ -14,6 +14,10 @@ import org.apache.stanbol.commons.web.ba
@Path("/cmsadapter")
public class RootResource extends BaseStanbolResource {
+ /**
+ * Simply redirects user to CMS Adapter's wiki page at IKS Wiki.
+ * @return
+ */
@GET
public Response notifyChange() {
try {
Modified: incubator/stanbol/trunk/cmsadapter/web/src/main/java/org/apache/stanbol/cmsadapter/web/utils/RestURIHelper.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/web/src/main/java/org/apache/stanbol/cmsadapter/web/utils/RestURIHelper.java?rev=1141552&r1=1141551&r2=1141552&view=diff
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/web/src/main/java/org/apache/stanbol/cmsadapter/web/utils/RestURIHelper.java (original)
+++ incubator/stanbol/trunk/cmsadapter/web/src/main/java/org/apache/stanbol/cmsadapter/web/utils/RestURIHelper.java Thu Jun 30 14:35:11 2011
@@ -13,7 +13,7 @@ public class RestURIHelper {
}
public static String getOntologyHref(String ontologyURI) {
- return ONTOLOGY + "/" + ontologyURI;
+ return "/" + ONTOLOGY + "/" + ontologyURI;
}
public static String getClassHref(String ontologyURI, String classURI) {