You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by su...@apache.org on 2011/04/30 13:18:34 UTC
svn commit: r1098099 [1/5] - in /incubator/stanbol/trunk/cmsadapter: ./
core/ core/src/ core/src/main/ core/src/main/java/ core/src/main/java/org/
core/src/main/java/org/apache/ core/src/main/java/org/apache/stanbol/
core/src/main/java/org/apache/stanb...
Author: suat
Date: Sat Apr 30 11:18:30 2011
New Revision: 1098099
URL: http://svn.apache.org/viewvc?rev=1098099&view=rev
Log:
STANBOL-188: Migration of CMS Adapter component
Added:
incubator/stanbol/trunk/cmsadapter/
incubator/stanbol/trunk/cmsadapter/README.txt (with props)
incubator/stanbol/trunk/cmsadapter/core/
incubator/stanbol/trunk/cmsadapter/core/pom.xml (with props)
incubator/stanbol/trunk/cmsadapter/core/src/
incubator/stanbol/trunk/cmsadapter/core/src/main/
incubator/stanbol/trunk/cmsadapter/core/src/main/java/
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DChildObjectTypeImp.java
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DObjectFactoryImp.java
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DObjectImp.java
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DObjectTypeImp.java
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DPropertyDefinitionImp.java
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DPropertyImp.java
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/mapping/
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/repository/
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/repository/RepositoryAccessManagerImpl.java
incubator/stanbol/trunk/cmsadapter/crx-rmi/
incubator/stanbol/trunk/cmsadapter/crx-rmi/pom.xml (with props)
incubator/stanbol/trunk/cmsadapter/crx-rmi/src/
incubator/stanbol/trunk/cmsadapter/crx-rmi/src/main/
incubator/stanbol/trunk/cmsadapter/crx-rmi/src/main/resources/
incubator/stanbol/trunk/cmsadapter/crx-rmi/src/main/resources/local-maven-repository/
incubator/stanbol/trunk/cmsadapter/crx-rmi/src/main/resources/local-maven-repository/com/
incubator/stanbol/trunk/cmsadapter/crx-rmi/src/main/resources/local-maven-repository/com/day/
incubator/stanbol/trunk/cmsadapter/crx-rmi/src/main/resources/local-maven-repository/com/day/crx-rmi/
incubator/stanbol/trunk/cmsadapter/crx-rmi/src/main/resources/local-maven-repository/com/day/crx-rmi/2.2.0/
incubator/stanbol/trunk/cmsadapter/crx-rmi/src/main/resources/local-maven-repository/com/day/crx-rmi/2.2.0/crx-rmi-2.2.0.jar (with props)
incubator/stanbol/trunk/cmsadapter/crx-rmi/src/main/resources/local-maven-repository/com/day/crx-rmi/2.2.0/crx-rmi-2.2.0.pom.lastUpdated (with props)
incubator/stanbol/trunk/cmsadapter/crx-rmi/src/main/resources/local-maven-repository/com/day/crx-rmi/maven-metadata-local.xml (with props)
incubator/stanbol/trunk/cmsadapter/jcr/
incubator/stanbol/trunk/cmsadapter/jcr/pom.xml (with props)
incubator/stanbol/trunk/cmsadapter/jcr/src/
incubator/stanbol/trunk/cmsadapter/jcr/src/main/
incubator/stanbol/trunk/cmsadapter/jcr/src/main/java/
incubator/stanbol/trunk/cmsadapter/jcr/src/main/java/org/
incubator/stanbol/trunk/cmsadapter/jcr/src/main/java/org/apache/
incubator/stanbol/trunk/cmsadapter/jcr/src/main/java/org/apache/stanbol/
incubator/stanbol/trunk/cmsadapter/jcr/src/main/java/org/apache/stanbol/cmsadapter/
incubator/stanbol/trunk/cmsadapter/jcr/src/main/java/org/apache/stanbol/cmsadapter/jcr/
incubator/stanbol/trunk/cmsadapter/jcr/src/main/java/org/apache/stanbol/cmsadapter/jcr/processor/
incubator/stanbol/trunk/cmsadapter/jcr/src/main/java/org/apache/stanbol/cmsadapter/jcr/processor/ConceptBridgesProcesser.java
incubator/stanbol/trunk/cmsadapter/jcr/src/main/java/org/apache/stanbol/cmsadapter/jcr/processor/InstanceBridgesProcesser.java
incubator/stanbol/trunk/cmsadapter/jcr/src/main/java/org/apache/stanbol/cmsadapter/jcr/processor/JCRNodeTypeLifter.java
incubator/stanbol/trunk/cmsadapter/jcr/src/main/java/org/apache/stanbol/cmsadapter/jcr/processor/JCRProcessor.java
incubator/stanbol/trunk/cmsadapter/jcr/src/main/java/org/apache/stanbol/cmsadapter/jcr/processor/PropertyBridgesProcesser.java
incubator/stanbol/trunk/cmsadapter/jcr/src/main/java/org/apache/stanbol/cmsadapter/jcr/processor/SubsumptionBridgesProcesser.java
incubator/stanbol/trunk/cmsadapter/jcr/src/main/java/org/apache/stanbol/cmsadapter/jcr/repository/
incubator/stanbol/trunk/cmsadapter/jcr/src/main/java/org/apache/stanbol/cmsadapter/jcr/repository/JCRModelMapper.java
incubator/stanbol/trunk/cmsadapter/jcr/src/main/java/org/apache/stanbol/cmsadapter/jcr/repository/JCRQueryRepresentation.java
incubator/stanbol/trunk/cmsadapter/jcr/src/main/java/org/apache/stanbol/cmsadapter/jcr/repository/JCRRepositoryAccess.java
incubator/stanbol/trunk/cmsadapter/jcr/src/main/java/org/apache/stanbol/cmsadapter/jcr/repository/QueryHelper.java
incubator/stanbol/trunk/cmsadapter/launchers/
incubator/stanbol/trunk/cmsadapter/launchers/lite/
incubator/stanbol/trunk/cmsadapter/launchers/lite/pom.xml (with props)
incubator/stanbol/trunk/cmsadapter/launchers/lite/src/
incubator/stanbol/trunk/cmsadapter/launchers/lite/src/main/
incubator/stanbol/trunk/cmsadapter/launchers/lite/src/main/bundles/
incubator/stanbol/trunk/cmsadapter/launchers/lite/src/main/bundles/list.xml (with props)
incubator/stanbol/trunk/cmsadapter/parent/
incubator/stanbol/trunk/cmsadapter/parent/pom.xml (with props)
incubator/stanbol/trunk/cmsadapter/parent/src/
incubator/stanbol/trunk/cmsadapter/parent/src/main/
incubator/stanbol/trunk/cmsadapter/pom.xml (with props)
incubator/stanbol/trunk/cmsadapter/rest-client/
incubator/stanbol/trunk/cmsadapter/rest-client/pom.xml (with props)
incubator/stanbol/trunk/cmsadapter/rest-client/src/
incubator/stanbol/trunk/cmsadapter/rest-client/src/main/
incubator/stanbol/trunk/cmsadapter/rest-client/src/main/java/
incubator/stanbol/trunk/cmsadapter/rest-client/src/main/java/org/
incubator/stanbol/trunk/cmsadapter/rest-client/src/main/java/org/apache/
incubator/stanbol/trunk/cmsadapter/rest-client/src/main/java/org/apache/stanbol/
incubator/stanbol/trunk/cmsadapter/rest-client/src/main/java/org/apache/stanbol/cmsadapter/
incubator/stanbol/trunk/cmsadapter/rest-client/src/main/java/org/apache/stanbol/cmsadapter/rest/
incubator/stanbol/trunk/cmsadapter/rest-client/src/main/java/org/apache/stanbol/cmsadapter/rest/client/
incubator/stanbol/trunk/cmsadapter/rest-client/src/main/java/org/apache/stanbol/cmsadapter/rest/client/CMSAdapterRESTClient.java
incubator/stanbol/trunk/cmsadapter/rest-client/src/main/java/org/apache/stanbol/cmsadapter/rest/client/CMSAdapterRESTClientImpl.java
incubator/stanbol/trunk/cmsadapter/servicesapi/
incubator/stanbol/trunk/cmsadapter/servicesapi/pom.xml (with props)
incubator/stanbol/trunk/cmsadapter/servicesapi/src/
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/helper/
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/helper/OntologyResourceHelper.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/internal/
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/internal/ConceptBridgeProcessor.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/internal/InstanceBridgeProcessor.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/internal/PropertyBridgeProcessor.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/internal/SubsumptionBridgeProcessor.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/mapping/
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/
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/mapping/
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/mapping/AnnotationType.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/mapping/BridgeDefinitions.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/mapping/ConceptBridge.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/mapping/InstanceBridge.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/mapping/NameType.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/mapping/ObjectFactory.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/mapping/PropertyAnnotation.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/mapping/PropertyBridge.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/mapping/SubsumptionBridge.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/mapping/package-info.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/AnnotationType.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/CMSObject.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/CMSObjects.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/ChildObjectDefinition.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/ClassificationObjects.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/ConnectionInfo.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/ContentObjects.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/ObjectFactory.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/ObjectTypeDefinition.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/ObjectTypeDefinitions.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/PropType.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/Property.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/PropertyAnnotation.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/PropertyDefinition.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/PropertySemantics.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DChildObjectType.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/model/web/package-info.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/repository/
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/RepositoryAccessException.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/repository/RepositoryAccessManager.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/resources/
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/resources/model/
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/resources/model/CMSObjectModel.xsd (with props)
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/resources/model/CR2OntologyMap.xsd
incubator/stanbol/trunk/cmsadapter/web/
incubator/stanbol/trunk/cmsadapter/web/pom.xml (with props)
incubator/stanbol/trunk/cmsadapter/web/src/
incubator/stanbol/trunk/cmsadapter/web/src/main/
incubator/stanbol/trunk/cmsadapter/web/src/main/java/
incubator/stanbol/trunk/cmsadapter/web/src/main/java/org/
incubator/stanbol/trunk/cmsadapter/web/src/main/java/org/apache/
incubator/stanbol/trunk/cmsadapter/web/src/main/java/org/apache/stanbol/
incubator/stanbol/trunk/cmsadapter/web/src/main/java/org/apache/stanbol/cmsadapter/
incubator/stanbol/trunk/cmsadapter/web/src/main/java/org/apache/stanbol/cmsadapter/web/
incubator/stanbol/trunk/cmsadapter/web/src/main/java/org/apache/stanbol/cmsadapter/web/CMSAdapterWebFragment.java
incubator/stanbol/trunk/cmsadapter/web/src/main/java/org/apache/stanbol/cmsadapter/web/JAXBProvider.java
incubator/stanbol/trunk/cmsadapter/web/src/main/java/org/apache/stanbol/cmsadapter/web/resources/
incubator/stanbol/trunk/cmsadapter/web/src/main/java/org/apache/stanbol/cmsadapter/web/resources/BridgeDefinitionsResource.java
incubator/stanbol/trunk/cmsadapter/web/src/main/java/org/apache/stanbol/cmsadapter/web/resources/NotifyResource.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/
incubator/stanbol/trunk/cmsadapter/web/src/main/java/org/apache/stanbol/cmsadapter/web/utils/RestURIHelper.java (with props)
incubator/stanbol/trunk/cmsadapter/web/src/main/resources/
incubator/stanbol/trunk/cmsadapter/web/src/main/resources/org/
incubator/stanbol/trunk/cmsadapter/web/src/main/resources/org/apache/
incubator/stanbol/trunk/cmsadapter/web/src/main/resources/org/apache/stanbol/
incubator/stanbol/trunk/cmsadapter/web/src/main/resources/org/apache/stanbol/cmsadapter/
incubator/stanbol/trunk/cmsadapter/web/src/main/resources/org/apache/stanbol/cmsadapter/web/
incubator/stanbol/trunk/cmsadapter/web/src/main/resources/org/apache/stanbol/cmsadapter/web/templates/
incubator/stanbol/trunk/cmsadapter/web/src/main/resources/org/apache/stanbol/cmsadapter/web/templates/imports/
incubator/stanbol/trunk/cmsadapter/web/src/main/resources/org/apache/stanbol/cmsadapter/web/templates/imports/cmsadapterDescription.ftl
Added: incubator/stanbol/trunk/cmsadapter/README.txt
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/README.txt?rev=1098099&view=auto
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/README.txt (added)
+++ incubator/stanbol/trunk/cmsadapter/README.txt Sat Apr 30 11:18:30 2011
@@ -0,0 +1,134 @@
+Stanbol CMS Adapter
+==========================
+This component of STANBOL is designed for extracting the already available semantics in the content
+models as an ontology and store it in knowledge base. The extraction process is realized by first lifting
+already existing node type and property definitions in the content managament system and then defining
+bridges between content management system and knowledge base and processing them. There are 3 kinds of bridges
+which are listed below.
+
+⢠Concept Bridge
+⢠Instance Bridge
+⢠Subsumption Bridge
+⢠Property Bridge (not directly created)
+
+
+Concept Bridge: This bridge type is designed for creating a class hierarchy in the generated ontology from a node
+hierarchy in the content management system. The paths of the nodes should be specified in the bridge
+definition. It is possible to define subsumption and property bridges within a concept bridge. A Subsumption
+bridge in a concept bridge creates parent/child relationship between the node specified in the bridge and
+another node that is referenced through a property which is also specified in the bridge. A property bridge
+within a concept bridge creates "disjointWith", "equivalentClass" relationships between the nodes.
+
+Example xml:
+<?xml version="1.0" encoding="UTF-8"?>
+<BridgeDefinitions xmlns="mapping.model.servicesapi.cmsadapter.stanbol.apache.org">
+ <ConceptBridge>
+ <Query>/TestDir/%</Query>
+ <SubsumptionBridge>
+ <PredicateName>subsumptionProperty</PredicateName>
+ </SubsumptionBridge>
+ <PropertyBridge>
+ <PredicateName>equiClass</PredicateName>
+ <PropertyAnnotation>
+ <Annotation>equivalentClass</Annotation>
+ </PropertyAnnotation>
+ </PropertyBridge>
+ <PropertyBridge>
+ <PredicateName>childClass</PredicateName>
+ <PropertyAnnotation>
+ <Annotation>subsumption</Annotation>
+ </PropertyAnnotation>
+ </PropertyBridge>
+ <PropertyBridge>
+ <PredicateName>disjointClass</PredicateName>
+ <PropertyAnnotation>
+ <Annotation>disjointWith</Annotation>
+ </PropertyAnnotation>
+ </PropertyBridge>
+ </ConceptBridge>
+</BridgeDefinitions>
+
+First of all, this concept bridge will create a class hierarchy from the nodes under the path "/TestDir". Thanks to "%"
+all nodes of subtree under TestDir node will be a separate class in the ontology. Also parent/child relations within them
+will also be set.
+
+This concept bridge includes a subsumption bridge inside. One or more parent/child relation will be created for each
+processed node having "subsumptionProperty" property. Target classes will be created for the values of "subsumptionProperty".
+
+This concept bridge also includes three property bridges inside. Property bridges within a concept bridge are valid only if
+they have one of the "equivalentClass", "disjointWith" or "subsumption" annotations. For property bridge having predicateName
+"equiClass", an "equivalentClass" relationship will be formed between the node under "/TestDir" path and the node values of
+"equiClass" property. To get the expected result, "equiClass" property should have a referencable type e.g "REFERENCE", "PATH"...
+
+
+Instance Bridge: This bridge type is designed for creating instances in the generated ontology from a node hierarchy in the
+content management system. The paths of the nodes should be specified in the bridge definition. It is possible to define
+property bridges within an instance bridge. A property bridge within an instance bridge creates assertions for the nodes that
+are specified in the bridge definition.
+
+Example xml:
+<?xml version="1.0" encoding="UTF-8"?>
+<BridgeDefinitions xmlns="mapping.model.servicesapi.cmsadapter.stanbol.apache.org">
+ <InstanceBridge>
+ <Query>/NewsArticles/%</Query>
+ <PropertyBridge>
+ <PredicateName>relatedItem</PredicateName>
+ <PropertyAnnotation>
+ <Annotation>symmetric</Annotation>
+ </PropertyAnnotation>
+ </PropertyBridge>
+ <PropertyBridge>
+ <PredicateName>categorizedBy</PredicateName>
+ <PropertyAnnotation>
+ <Annotation>instanceOf</Annotation>
+ </PropertyAnnotation>
+ </PropertyBridge>
+ <PropertyBridge>
+ <PredicateName>title</PredicateName>
+ </PropertyBridge>
+ </InstanceBridge>
+</BridgeDefinitions>
+
+First of all, this instance bridge will create individuals from the nodes under the path "/NewsArticles". Thanks to "%"
+all nodes of subtree under NewsArticles node will be a separate individual in the ontology.
+
+This instance bridge includes three property bridges inside. Valid annotations for property bridge within an instance bridge
+are "functional", "inverseFunctional", "symmetric", "transitive" and "instanceOf". According to the type of the property that
+is set within content management system, datatype or object property assertions will be set to created individual. If there is
+any specified annotation, it will added to already lifted property in the ontology.
+
+Thanks to property bridge having predicateName "categorizedBy", one or more type assertions will be added to the created
+individual. A class will be created in the ontology for each value of categorizedBy property.
+
+
+As subsumption and property bridges are explained indirectly, they are skipped. A last remark is that while it is possible to
+create separate definitions of concept, instance and subsumption bridges, property bridges can only be attached to a concept
+or instance bridge.
+
+
+
+Building CMS Adapter
+==========================
+
+* Checkout Apache Stanbol
+ $ svn co http://svn.apache.org/repos/asf/incubator/stanbol/trunk/
+* Build Stanbol [see] (http://svn.apache.org/repos/asf/incubator/stanbol/trunk/README.md)
+* Build Stanbol Ontology Manager - Store
+ $ cd trunk/ontologymanager/store
+ $ mvn install
+* Build Stanbol Commons Web Ontology
+ $ cd trunk/commons/web/ontology
+ $ mvn install
+* Go to CMS Adapter root (/stanbol/trunk/cmsadapter)
+ $ mvn install
+
+
+Run launcher:
+
+* Run full launcher
+ $ cd launchers/lite
+ $ java -jar -Xmx1g -XX:MaxPermSize=128m target/org.apache.stanbol.cmsadapter.launchers.lite-0.9-SNAPSHOT.jar
+
+
+Configuration
+==========================
Propchange: incubator/stanbol/trunk/cmsadapter/README.txt
------------------------------------------------------------------------------
svn:executable = *
Added: incubator/stanbol/trunk/cmsadapter/core/pom.xml
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/core/pom.xml?rev=1098099&view=auto
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/core/pom.xml (added)
+++ incubator/stanbol/trunk/cmsadapter/core/pom.xml Sat Apr 30 11:18:30 2011
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.stanbol</groupId>
+ <artifactId>org.apache.stanbol.cmsadapter.parent</artifactId>
+ <version>0.9-SNAPSHOT</version>
+ <relativePath>../parent</relativePath>
+ </parent>
+
+ <groupId>org.apache.stanbol</groupId>
+ <artifactId>org.apache.stanbol.cmsadapter.core</artifactId>
+ <packaging>bundle</packaging>
+
+ <name>Apache Stanbol CMS Adapter Core Bundle</name>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <extensions>true</extensions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-scr-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.stanbol</groupId>
+ <artifactId>org.apache.stanbol.ontologymanager.store.rest.client</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.stanbol</groupId>
+ <artifactId>org.apache.stanbol.ontologymanager.store.api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.stanbol</groupId>
+ <artifactId>org.apache.stanbol.cmsadapter.servicesapi</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.stanbol</groupId>
+ <artifactId>org.apache.stanbol.cmsadapter.jcr</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>javax.jcr</groupId>
+ <artifactId>jcr</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-jcr-rmi</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.scr.annotations</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.hp.hpl.jena</groupId>
+ <artifactId>jena</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.compendium</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
+ </dependencies>
+</project>
+
Propchange: incubator/stanbol/trunk/cmsadapter/core/pom.xml
------------------------------------------------------------------------------
svn:executable = *
Added: incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DChildObjectTypeImp.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DChildObjectTypeImp.java?rev=1098099&view=auto
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DChildObjectTypeImp.java (added)
+++ incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DChildObjectTypeImp.java Sat Apr 30 11:18:30 2011
@@ -0,0 +1,41 @@
+package org.apache.stanbol.cmsadapter.core.decorated;
+
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.ChildObjectDefinition;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.ObjectTypeDefinition;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated.DChildObjectType;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated.DObjectAdapter;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated.DObjectType;
+import org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccess;
+import org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccessException;
+
+public class DChildObjectTypeImp implements DChildObjectType {
+
+ private ChildObjectDefinition instance;
+ private DObjectAdapter factory;
+ private RepositoryAccess access;
+ private DObjectType allowedObjectDefinition = null;
+
+ public DChildObjectTypeImp(ChildObjectDefinition instance, DObjectAdapter factory, RepositoryAccess access) {
+ this.instance = instance;
+ this.factory = factory;
+ this.access = access;
+ }
+
+ @Override
+ public boolean isRequired() {
+ return instance.isRequired();
+ }
+
+ @Override
+ public DObjectType getAllowedObjectDefinitions() throws RepositoryAccessException {
+ ObjectTypeDefinition allowedDefinition = access.getAllowableTypeDef(instance, factory.getSession());
+ allowedObjectDefinition = factory.wrapAsDObjectType(allowedDefinition);
+ return allowedObjectDefinition;
+ }
+
+ @Override
+ public ChildObjectDefinition getInstance() {
+ return instance;
+ }
+
+}
Added: incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DObjectFactoryImp.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DObjectFactoryImp.java?rev=1098099&view=auto
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DObjectFactoryImp.java (added)
+++ incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DObjectFactoryImp.java Sat Apr 30 11:18:30 2011
@@ -0,0 +1,63 @@
+package org.apache.stanbol.cmsadapter.core.decorated;
+
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.ChildObjectDefinition;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.ConnectionInfo;
+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.Property;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.PropertyDefinition;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated.DChildObjectType;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated.DObject;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated.DObjectAdapter;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated.DObjectType;
+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.repository.RepositoryAccess;
+import org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccessException;
+
+public class DObjectFactoryImp implements DObjectAdapter {
+
+ private RepositoryAccess access;
+ private Object session;
+
+ public DObjectFactoryImp(RepositoryAccess access, Object session) {
+ this.access = access;
+ this.session = session;
+ }
+
+ public DObjectFactoryImp(RepositoryAccess access, ConnectionInfo connectionInfo) throws RepositoryAccessException {
+ this.access = access;
+ this.session = access.getSession(connectionInfo);
+ }
+
+ @Override
+ public DObject wrapAsDObject(CMSObject node) {
+ return new DObjectImp(node, this, access);
+ }
+
+ @Override
+ public DObjectType wrapAsDObjectType(ObjectTypeDefinition definition) {
+ return new DObjectTypeImp(definition, this, access);
+ }
+
+ @Override
+ public DPropertyDefinition wrapAsDPropertyDefinition(PropertyDefinition propertyDefinition) {
+ return new DPropertyDefinitionImp(propertyDefinition);
+ }
+
+ @Override
+ public DChildObjectType wrapAsDChildObjectType(ChildObjectDefinition childObjectDefinition) {
+ return new DChildObjectTypeImp(childObjectDefinition, this, access);
+ }
+
+ @Override
+ public DProperty wrapAsDProperty(Property property) {
+ return new DPropertyImp(property, this, access);
+ }
+
+ @Override
+ public Object getSession() {
+ return session;
+ }
+
+}
Added: incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DObjectImp.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DObjectImp.java?rev=1098099&view=auto
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DObjectImp.java (added)
+++ incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DObjectImp.java Sat Apr 30 11:18:30 2011
@@ -0,0 +1,109 @@
+package org.apache.stanbol.cmsadapter.core.decorated;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.CMSObject;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.Property;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated.DObject;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated.DObjectAdapter;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated.DObjectType;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated.DProperty;
+import org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccess;
+import org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccessException;
+
+public class DObjectImp implements DObject {
+
+ private CMSObject instance;
+ private DObjectAdapter factory;
+ private RepositoryAccess access;
+ private List<DObject> children = null;
+ private List<DProperty> properties = null;
+ private DObject parent = null;
+ private DObjectType objectType = null;
+
+ public DObjectImp(CMSObject instance, DObjectAdapter factory, RepositoryAccess access) {
+ this.instance = instance;
+ this.factory = factory;
+ this.access = access;
+ }
+
+ @Override
+ public String getID() {
+ return instance.getUniqueRef();
+ }
+
+ @Override
+ public String getPath() {
+ return instance.getPath();
+ }
+
+ @Override
+ public String getName() {
+ return instance.getLocalname();
+ }
+
+ @Override
+ public String getNamespace() {
+ return instance.getNamespace();
+ }
+
+ @Override
+ public List<DObject> getChildren() throws RepositoryAccessException {
+ if (children != null) {
+ return children;
+ }
+
+ List<CMSObject> nodes = access.getChildren(instance, factory.getSession());
+
+ children = new ArrayList<DObject>(nodes.size());
+ for (CMSObject node : nodes) {
+ children.add(this.factory.wrapAsDObject(node));
+ }
+ return children;
+ }
+
+ @Override
+ public DObject getParent() throws RepositoryAccessException {
+ if (parent != null) {
+ return parent;
+ }
+
+ parent = factory.wrapAsDObject(access.getParentByNode(instance, factory.getSession()));
+
+ return parent;
+ }
+
+ @Override
+ public DObjectType getObjectType() throws RepositoryAccessException {
+ if (objectType != null) {
+ return this.objectType;
+ }
+
+ String typeRef = instance.getObjectTypeRef();
+ objectType = factory.wrapAsDObjectType(access.getObjectTypeDefinition(typeRef, factory.getSession()));
+ return objectType;
+ }
+
+ @Override
+ public List<DProperty> getProperties() throws RepositoryAccessException {
+ if (properties != null) {
+ return properties;
+ }
+
+ List<Property> props = access.getProperties(instance, factory.getSession());
+
+ properties = new ArrayList<DProperty>(props.size());
+
+ for (Property prop : props) {
+ properties.add(factory.wrapAsDProperty(prop));
+ }
+ return properties;
+ }
+
+ @Override
+ public CMSObject getInstance() {
+ return this.instance;
+ }
+
+}
Added: incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DObjectTypeImp.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DObjectTypeImp.java?rev=1098099&view=auto
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DObjectTypeImp.java (added)
+++ incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DObjectTypeImp.java Sat Apr 30 11:18:30 2011
@@ -0,0 +1,108 @@
+package org.apache.stanbol.cmsadapter.core.decorated;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.ChildObjectDefinition;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.ObjectTypeDefinition;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.PropertyDefinition;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated.DChildObjectType;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated.DObjectAdapter;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated.DObjectType;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated.DPropertyDefinition;
+import org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccess;
+import org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccessException;
+
+public class DObjectTypeImp implements DObjectType {
+
+ private ObjectTypeDefinition instance;
+ private DObjectAdapter factory;
+ private RepositoryAccess access;
+ private List<DPropertyDefinition> propertyDefinitions;
+ private List<DObjectType> parentDefinitions;
+ private List<DChildObjectType> childDefinitions;
+
+ public DObjectTypeImp(ObjectTypeDefinition instance,
+ DObjectAdapter factory, RepositoryAccess access) {
+ this.instance = instance;
+ this.factory = factory;
+ this.access = access;
+ }
+
+ @Override
+ public String getID() {
+ return instance.getUniqueRef();
+ }
+
+ @Override
+ public String getName() {
+ return instance.getLocalname();
+ }
+
+ @Override
+ public String getNamespace() {
+ return instance.getNamespace();
+ }
+
+ @Override
+ public List<DPropertyDefinition> getPropertyDefinitions()
+ throws RepositoryAccessException {
+ if (propertyDefinitions != null) {
+ return propertyDefinitions;
+ } else {
+ List<PropertyDefinition> propDefinitions = access
+ .getPropertyDefinitions(instance, factory.getSession());
+
+ propertyDefinitions = new ArrayList<DPropertyDefinition>(
+ propDefinitions.size());
+ for (PropertyDefinition propDefinition : propDefinitions) {
+ propertyDefinitions.add(factory
+ .wrapAsDPropertyDefinition(propDefinition));
+ }
+
+ return propertyDefinitions;
+ }
+ }
+
+ @Override
+ public List<DObjectType> getParentDefinitions()
+ throws RepositoryAccessException {
+ if (parentDefinitions != null) {
+ return parentDefinitions;
+ }
+
+ List<ObjectTypeDefinition> parDefinitions = access
+ .getParentTypeDefinitions(instance, factory.getSession());
+ propertyDefinitions = new ArrayList<DPropertyDefinition>(
+ parDefinitions.size());
+ for (ObjectTypeDefinition parentTypeRef : parDefinitions) {
+ parentDefinitions.add(factory.wrapAsDObjectType(parentTypeRef));
+ }
+
+ return parentDefinitions;
+ }
+
+ @Override
+ public List<DChildObjectType> getChildDefinitions()
+ throws RepositoryAccessException {
+ if (childDefinitions != null) {
+ return childDefinitions;
+ }
+
+ List<ChildObjectDefinition> childDefs = access
+ .getChildObjectTypeDefinitions(instance, factory.getSession());
+
+ childDefinitions = new ArrayList<DChildObjectType>(childDefs.size());
+ for (ChildObjectDefinition childDef : childDefs) {
+ childDefinitions.add(factory.wrapAsDChildObjectType(childDef));
+ }
+
+ return childDefinitions;
+ }
+
+ @Override
+ public ObjectTypeDefinition getInstance() {
+ return instance;
+ }
+
+}
Added: incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DPropertyDefinitionImp.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DPropertyDefinitionImp.java?rev=1098099&view=auto
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DPropertyDefinitionImp.java (added)
+++ incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DPropertyDefinitionImp.java Sat Apr 30 11:18:30 2011
@@ -0,0 +1,59 @@
+package org.apache.stanbol.cmsadapter.core.decorated;
+
+import java.math.BigInteger;
+import java.util.List;
+
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.AnnotationType;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.PropType;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.PropertyDefinition;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated.DPropertyDefinition;
+
+public class DPropertyDefinitionImp implements DPropertyDefinition {
+
+ private PropertyDefinition instance;
+
+ public DPropertyDefinitionImp(PropertyDefinition instance) {
+ this.instance = instance;
+ }
+
+ @Override
+ public String getUniqueRef() {
+ return instance.getUniqueRef();
+ }
+
+ @Override
+ public String getName() {
+ return instance.getLocalname();
+ }
+
+ @Override
+ public String getNamespace() {
+ return instance.getNamespace();
+ }
+
+ @Override
+ public AnnotationType getAnnotations() {
+ return instance.getAnnotation();
+ }
+
+ @Override
+ public BigInteger getCardinality() {
+ return instance.getCardinality();
+ }
+
+ @Override
+ public PropType getPropertyType() {
+ return instance.getPropertyType();
+ }
+
+ @Override
+ public List<String> getValueConstraints() {
+ return instance.getValueConstraint();
+ }
+
+ @Override
+ public PropertyDefinition getInstance() {
+ return instance;
+ }
+
+}
Added: incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DPropertyImp.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DPropertyImp.java?rev=1098099&view=auto
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DPropertyImp.java (added)
+++ incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DPropertyImp.java Sat Apr 30 11:18:30 2011
@@ -0,0 +1,70 @@
+package org.apache.stanbol.cmsadapter.core.decorated;
+
+import java.util.List;
+
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.CMSObject;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.PropType;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.Property;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.PropertyDefinition;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated.DObject;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated.DObjectAdapter;
+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.repository.RepositoryAccess;
+import org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccessException;
+
+public class DPropertyImp implements DProperty {
+
+ private Property instance;
+ private DObjectAdapter adapter;
+ private RepositoryAccess access;
+ private DObject sourceObject;
+ private DPropertyDefinition propertyDefinition;
+
+ public DPropertyImp(Property instance, DObjectAdapter adapter, RepositoryAccess access) {
+ this.instance = instance;
+ this.adapter = adapter;
+ this.access = access;
+ }
+
+ @Override
+ public PropType getType() {
+ return instance.getType();
+ }
+
+ @Override
+ public DPropertyDefinition getDefinition() throws RepositoryAccessException {
+ if (propertyDefinition != null) {
+ return propertyDefinition;
+ }
+
+ PropertyDefinition propDef = access.getPropertyDefinition(instance, adapter.getSession());
+
+ propertyDefinition = adapter.wrapAsDPropertyDefinition(propDef);
+ return propertyDefinition;
+
+ }
+
+ @Override
+ public DObject getSourceObject() throws RepositoryAccessException {
+ CMSObject source = access.getContainerObject(instance, adapter.getSession());
+ sourceObject = adapter.wrapAsDObject(source);
+ return sourceObject;
+ }
+
+ @Override
+ public List<String> getValue() {
+ return instance.getValue();
+ }
+
+ @Override
+ public Property getInstance() {
+ return instance;
+ }
+
+ @Override
+ public String getName() {
+ return this.getName();
+ }
+
+}
Added: 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=1098099&view=auto
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/mapping/DefaultNamingStrategy.java (added)
+++ incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/mapping/DefaultNamingStrategy.java Sat Apr 30 11:18:30 2011
@@ -0,0 +1,234 @@
+package org.apache.stanbol.cmsadapter.core.mapping;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.commons.lang.RandomStringUtils;
+import org.apache.stanbol.cmsadapter.servicesapi.helper.CMSAdapterVocabulary;
+import org.apache.stanbol.cmsadapter.servicesapi.helper.OntologyResourceHelper;
+import org.apache.stanbol.cmsadapter.servicesapi.mapping.NamingStrategy;
+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 org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccessException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.hp.hpl.jena.ontology.OntModel;
+import com.hp.hpl.jena.rdf.model.RDFList;
+
+public class DefaultNamingStrategy implements NamingStrategy {
+ private static final Logger log = LoggerFactory.getLogger(DefaultNamingStrategy.class);
+
+ /**
+ * Used to separate any path segment
+ */
+ private static final String PATH_DELIMITER = "/";
+
+ private static final String TYPE_SEPARATOR = "-";
+ private static final String CLASS_DELIMITER = "class";
+ private static final String INDIVIDUAL_DELIMITER = "individual";
+ private static final String PROPERTY_DELIMITER = "prop";
+ private static final String OBJECT_PROPERTY_DELIMITER = "oprop";
+ private static final String DATA_PROPERTY_DELIMITER = "dprop";
+ private static final String UNION_CLASS_DELIMITER = "unions";
+
+ private RepositoryAccess repositoryAccess;
+ private Object session;
+ private OntModel processedModel;
+
+ public DefaultNamingStrategy(RepositoryAccess repositoryAccess, Object session, OntModel processedModel) {
+ this.repositoryAccess = repositoryAccess;
+ this.session = session;
+ this.processedModel = processedModel;
+ }
+
+ public DefaultNamingStrategy(RepositoryAccess repositoryAccess, OntModel processedModel) {
+ this.repositoryAccess = repositoryAccess;
+ this.session = null;
+ this.processedModel = processedModel;
+ }
+
+ @Override
+ public String getClassName(String ontologyURI, CMSObject cmsObject) {
+ List<String> candidateNames = Arrays.asList(new String[] {cmsObject.getLocalname(), cmsObject.getPath(),
+ cmsObject.getUniqueRef()});
+ return getAvailableResourceName(ontologyURI, candidateNames, CLASS_DELIMITER);
+ }
+
+ @Override
+ public String getClassName(String ontologyURI, ObjectTypeDefinition objectTypeDefinition) {
+ List<String> candidateNames = Arrays.asList(new String[] {objectTypeDefinition.getLocalname()});
+ return getAvailableResourceName(ontologyURI, candidateNames, CLASS_DELIMITER);
+ }
+
+ @Override
+ public String getClassName(String ontologyURI, String reference) {
+ List<String> candidateNames = Arrays.asList(new String[] {reference});
+ return getAvailableResourceName(ontologyURI, candidateNames, CLASS_DELIMITER);
+ }
+
+ @Override
+ public String getIndividualName(String ontologyURI, CMSObject cmsObject) {
+ List<String> candidateNames = Arrays.asList(new String[] {cmsObject.getLocalname(), cmsObject.getPath(),
+ cmsObject.getUniqueRef()});
+ return getAvailableResourceName(ontologyURI, candidateNames, INDIVIDUAL_DELIMITER);
+ }
+
+ @Override
+ public String getObjectPropertyName(String ontologyURI, PropertyDefinition propertyDefinition) {
+ List<String> candidateNames = Arrays.asList(new String[] {propertyDefinition.getLocalname(),
+ propertyDefinition.getUniqueRef()});
+ return getAvailableResourceName(ontologyURI, candidateNames, OBJECT_PROPERTY_DELIMITER);
+ }
+
+ @Override
+ public String getDataPropertyName(String ontologyURI, PropertyDefinition propertyDefinition) {
+ List<String> candidateNames = Arrays.asList(new String[] {propertyDefinition.getLocalname(),
+ propertyDefinition.getUniqueRef()});
+ return getAvailableResourceName(ontologyURI, candidateNames, DATA_PROPERTY_DELIMITER);
+ }
+
+ @Override
+ public String getUnionClassURI(String ontologyURI, RDFList list) {
+ List<String> candidateNames = Arrays.asList(new String[] {RandomStringUtils.randomAlphanumeric(4)});
+ return getAvailableResourceName(ontologyURI, candidateNames, UNION_CLASS_DELIMITER);
+ }
+
+ @Override
+ public String getIndividualName(String ontologyURI, String reference) {
+ List<String> candidateNames = Arrays.asList(new String[] {reference});
+ return getAvailableResourceName(ontologyURI, candidateNames, INDIVIDUAL_DELIMITER);
+ }
+
+ @Override
+ public String getPropertyName(String ontologyURI, String reference) {
+ List<String> candidateNames = Arrays.asList(new String[] {reference});
+ return getAvailableResourceName(ontologyURI, candidateNames, PROPERTY_DELIMITER);
+ }
+
+ @Override
+ public String getObjectPropertyName(String ontologyURI, String reference) {
+ List<String> candidateNames = Arrays.asList(new String[] {reference});
+ return getAvailableResourceName(ontologyURI, candidateNames, OBJECT_PROPERTY_DELIMITER);
+ }
+
+ @Override
+ public String getDataPropertyName(String ontologyURI, String reference) {
+ List<String> candidateNames = Arrays.asList(new String[] {reference});
+ 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) {
+ ResourceNameRepresentation nameRep;
+ StringBuilder sb;
+ String name;
+
+ for (String candidate : candidates) {
+ nameRep = getPrecedingBaseURI(candidate, ontologyURI);
+ sb = new StringBuilder(nameRep.getResourceBaseURI());
+ sb.append(resourceDelimiter).append(TYPE_SEPARATOR);
+ sb.append(nameRep.getResourceName());
+ name = sb.toString();
+
+ if (processedModel.getOntResource(name) == null) {
+ log.debug("Generated resource name {} from {}.", name, candidate);
+ return name;
+ }
+ }
+
+ log.warn("No suitable URI produced for candidates {}.", candidates);
+ return null;
+ }
+
+ private ResourceNameRepresentation getPrecedingBaseURI(String resourceName, String ontologyURI) {
+ ResourceNameRepresentation resourceNameRep = new ResourceNameRepresentation();
+
+ if (resourceName.contains(":")) {
+ String newURI;
+ String prefix = detectPrefix(resourceName);
+ resourceNameRep.setResourceName(resourceName);
+
+ // first try to resolve prefix through processed OntModel
+ newURI = processedModel.getNsPrefixURI(prefix);
+ if (newURI != null) {
+ resourceNameRep.setResourceBaseURI(OntologyResourceHelper.addResourceDelimiter(newURI));
+ return resourceNameRep;
+ }
+
+ // second try to resolve prefix through content repository itself
+ if (repositoryAccess != null && session != null) {
+ try {
+ newURI = repositoryAccess.getNamespaceURI(prefix, session);
+ if (newURI != null) {
+ resourceNameRep.setResourceBaseURI(OntologyResourceHelper
+ .addResourceDelimiter(newURI));
+ return resourceNameRep;
+ }
+ } catch (RepositoryAccessException e) {
+ log.warn("Cannot access repository.", e);
+ }
+ }
+
+ // prefix still cannot be resolved, create a dummy URI
+ newURI = CMSAdapterVocabulary.DEFAULT_NS_URI + PATH_DELIMITER + prefix;
+ resourceNameRep.setResourceBaseURI(OntologyResourceHelper.addResourceDelimiter(newURI));
+ processedModel.setNsPrefix(prefix, newURI);
+
+ log.warn("Cannot find URI for prefix {}. Created dummy URI {}.", prefix, newURI);
+
+ } else {
+ resourceNameRep.setResourceName(resourceName);
+ resourceNameRep.setResourceBaseURI(OntologyResourceHelper.addResourceDelimiter(ontologyURI));
+ }
+ return resourceNameRep;
+ }
+
+ private String detectPrefix(String resourceName) {
+ int colonIndex = resourceName.lastIndexOf(":");
+ String prefix = "";
+ for (int i = colonIndex - 1; i >= 0 && resourceName.charAt(i) != '_'; i--) {
+ prefix = resourceName.charAt(i) + prefix;
+ }
+ return prefix;
+ }
+}
+
+class ResourceNameRepresentation {
+ private String resourceName;
+ private String resourceBaseURI;
+
+ public void setResourceName(String resourceName) {
+ this.resourceName = resourceName;
+ }
+
+ public String getResourceName() {
+ return this.resourceName;
+ }
+
+ public void setResourceBaseURI(String resourceBaseURI) {
+ this.resourceBaseURI = resourceBaseURI;
+ }
+
+ public String getResourceBaseURI() {
+ return this.resourceBaseURI;
+ }
+}
Added: 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=1098099&view=auto
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/mapping/MappingEngineImpl.java (added)
+++ incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/mapping/MappingEngineImpl.java Sat Apr 30 11:18:30 2011
@@ -0,0 +1,204 @@
+package org.apache.stanbol.cmsadapter.core.mapping;
+
+import java.io.ByteArrayOutputStream;
+import java.util.List;
+import java.util.Map;
+
+import javax.jcr.RepositoryException;
+
+import org.apache.felix.scr.annotations.Activate;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.Service;
+import org.apache.stanbol.cmsadapter.core.decorated.DObjectFactoryImp;
+import org.apache.stanbol.cmsadapter.jcr.processor.ConceptBridgesProcesser;
+import org.apache.stanbol.cmsadapter.jcr.processor.InstanceBridgesProcesser;
+import org.apache.stanbol.cmsadapter.jcr.processor.JCRNodeTypeLifter;
+import org.apache.stanbol.cmsadapter.jcr.processor.SubsumptionBridgesProcesser;
+import org.apache.stanbol.cmsadapter.servicesapi.helper.OntologyResourceHelper;
+import org.apache.stanbol.cmsadapter.servicesapi.mapping.MappingEngine;
+import org.apache.stanbol.cmsadapter.servicesapi.mapping.NamingStrategy;
+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.CMSObject;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated.DObjectAdapter;
+import org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccess;
+import org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccessException;
+import org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccessManager;
+import org.apache.stanbol.ontologymanager.store.rest.client.RestClient;
+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.ModelFactory;
+import com.hp.hpl.jena.rdf.model.RDFWriter;
+
+@Component(factory = "org.apache.stanbol.cmsadapter.servicesapi.mapping.MappingEngineFactory")
+@Service
+public class MappingEngineImpl implements MappingEngine {
+ private static final Logger logger = LoggerFactory.getLogger(MappingEngineImpl.class);
+
+ /*
+ * public static final String PROPERTY_ONTOLOGY_URI = "ontology.uri"; public static final String
+ * PROPERTY_CONNECTION_INFO = "connection.info";
+ *
+ * @Property(name = PROPERTY_ONTOLOGY_URI) private String ontologyURI;
+ *
+ * @Property(name = PROPERTY_CONNECTION_INFO) private ConnectionInfo connectionInfo;
+ */
+ @Reference
+ private RestClient storeClient;
+ @Reference
+ private RepositoryAccessManager accessManager;
+
+ private Object session;
+ private OntModel ontModel;
+ private String ontologyURI;
+ private BridgeDefinitions bridgeDefinitions;
+ private OntologyResourceHelper ontologyResourceHelper;
+ private DObjectAdapter adapter;
+ private NamingStrategy namingStrategy;
+
+ public MappingEngineImpl() {
+
+ }
+
+ @Activate
+ public void activate(final Map<?,?> properties) {
+
+ }
+
+ public Object getSession() {
+ return session;
+ }
+
+ public OntModel getOntModel() {
+ return ontModel;
+ }
+
+ public BridgeDefinitions getBridgeDefinitions() {
+ return bridgeDefinitions;
+ }
+
+ public OntologyResourceHelper getOntologyResourceHelper() {
+ return ontologyResourceHelper;
+ }
+
+ public String getOntologyURI() {
+ return ontologyURI;
+ }
+
+ @Override
+ public NamingStrategy getNamingStrategy() {
+ return namingStrategy;
+ }
+
+ @Override
+ public void mapCR(OntModel model, String ontologyURI, List<CMSObject> cmsObjects) throws RepositoryAccessException {
+ ConnectionInfo connectionInfo = OntologyResourceHelper.getConnectionInfo(model);
+ RepositoryAccess accessor = accessManager.getRepositoryAccessor(connectionInfo);
+ this.session = accessor.getSession(connectionInfo);
+ this.bridgeDefinitions = OntologyResourceHelper.getBridgeDefinitions(model);
+ this.ontologyURI = ontologyURI;
+ this.ontModel = model;
+ this.namingStrategy = new DefaultNamingStrategy(accessor, session, ontModel);
+ this.ontologyResourceHelper = new OntologyResourceHelper(this);
+ this.adapter = new DObjectFactoryImp(accessor, session);
+
+ long t1 = System.currentTimeMillis();
+ new ConceptBridgesProcesser(this).processUpdates(cmsObjects);
+
+ new SubsumptionBridgesProcesser(this).processUpdates(cmsObjects);
+
+ new InstanceBridgesProcesser(this).processUpdates(cmsObjects);
+ logger.debug("Total process time for ontology {} is {} ms", ontologyURI, System.currentTimeMillis()
+ - t1);
+
+ try {
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ RDFWriter rdfWriter = ontModel.getWriter("RDF/XML");
+ rdfWriter.setProperty("xmlbase", ontologyURI);
+ rdfWriter.write(ontModel, bos, ontologyURI);
+ byte[] ontologyContentAsByteArray = bos.toByteArray();
+ String ontologyContentAsString = new String(ontologyContentAsByteArray);
+ storeClient.saveOntology(ontologyContentAsString, ontologyURI, "UTF-8");
+
+ } catch (Exception ex) {
+ logger.error("Exception occurred while saving the ontology");
+ logger.error(ex.getMessage());
+ // TODO return error message to flex side
+ }
+ }
+
+ @Override
+ public void mapCR(BridgeDefinitions bridges, ConnectionInfo connectionInfo, String ontologyURI) throws RepositoryAccessException {
+
+ RepositoryAccess accessor = accessManager.getRepositoryAccessor(connectionInfo);
+ this.session = accessor.getSession(connectionInfo);
+ this.bridgeDefinitions = bridges;
+ this.ontologyURI = ontologyURI;
+ this.ontModel = ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM);
+ this.namingStrategy = new DefaultNamingStrategy(accessor, session, ontModel);
+ this.ontologyResourceHelper = new OntologyResourceHelper(this);
+ this.adapter = new DObjectFactoryImp(accessor, session);
+
+ long t1 = System.currentTimeMillis();
+ try {
+ new JCRNodeTypeLifter(this).lift();
+ } catch (RepositoryException e) {
+ logger.error("Lifting error", e);
+ }
+
+ // TODO Currently there are only JCR Processors
+ new ConceptBridgesProcesser(this).processBridges();
+
+ // Processing SubsumptionBridges
+ new SubsumptionBridgesProcesser(this).processBridges();
+
+ // Processing InstanceBridges
+ new InstanceBridgesProcesser(this).processBridges();
+
+ // save connection info
+ OntologyResourceHelper.saveConnectionInfo(connectionInfo, ontModel);
+ // save bridge definitions
+ // deserialize
+ OntologyResourceHelper.saveBridgeDefinitions(bridgeDefinitions, ontModel);
+
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+
+ logger.debug("Total process time for ontology {} is {} ms", ontologyURI, System.currentTimeMillis()
+ - t1);
+
+ try {
+ RDFWriter rdfWriter = ontModel.getWriter("RDF/XML");
+ rdfWriter.setProperty("xmlbase", ontologyURI);
+ rdfWriter.write(ontModel, bos, ontologyURI);
+ byte[] ontologyContentAsByteArray = bos.toByteArray();
+ String ontologyContentAsString = new String(ontologyContentAsByteArray);
+ storeClient.saveOntology(ontologyContentAsString, ontologyURI, "UTF-8");
+
+ } catch (Exception ex) {
+ logger.error("Exception occurred while saving the ontology");
+ logger.error(ex.getMessage());
+ // TODO return error message to flex side
+ }
+
+ }
+
+ @Override
+ public void liftNodeTypes(ConnectionInfo connectionInfo, String ontologyURI) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public RepositoryAccessManager getRepositoryAccessManager() {
+ return accessManager;
+ }
+
+ @Override
+ public DObjectAdapter getDObjectAdapter() {
+ return adapter;
+ }
+}
Added: incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/repository/RepositoryAccessManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/repository/RepositoryAccessManagerImpl.java?rev=1098099&view=auto
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/repository/RepositoryAccessManagerImpl.java (added)
+++ incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/repository/RepositoryAccessManagerImpl.java Sat Apr 30 11:18:30 2011
@@ -0,0 +1,75 @@
+package org.apache.stanbol.cmsadapter.core.repository;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.apache.felix.scr.annotations.ReferencePolicy;
+import org.apache.felix.scr.annotations.Service;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.ConnectionInfo;
+import org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccess;
+import org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccessManager;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@Component
+@Service
+public class RepositoryAccessManagerImpl implements RepositoryAccessManager {
+
+ @Reference(cardinality = ReferenceCardinality.MANDATORY_MULTIPLE, referenceInterface = RepositoryAccess.class, policy = ReferencePolicy.DYNAMIC, bind = "bindRepositoryAccess", unbind = "unbindRepositoryAccess")
+ private List<RepositoryAccess> accessors = new ArrayList<RepositoryAccess>();
+
+ private static final Logger logger = LoggerFactory.getLogger(RepositoryAccessManagerImpl.class);
+
+ @Override
+ public RepositoryAccess getRepositoryAccessor(ConnectionInfo connectionInfo) {
+ Iterator<RepositoryAccess> rai;
+ synchronized (accessors) {
+ rai = accessors.iterator();
+ }
+
+ while (rai.hasNext()) {
+ RepositoryAccess ra = rai.next();
+ if (ra.canRetrieve(connectionInfo)) {
+ return ra;
+ }
+ }
+
+ logger.warn("No suitable repository access implementation for connection type {} ",
+ connectionInfo.getConnectionType());
+ return null;
+ }
+
+ @Override
+ public RepositoryAccess getRepositoryAccess(Object session) {
+ Iterator<RepositoryAccess> rai;
+ synchronized (accessors) {
+ rai = accessors.iterator();
+ }
+
+ while (rai.hasNext()) {
+ RepositoryAccess ra = rai.next();
+ if (ra.canRetrieve(session)) {
+ return ra;
+ }
+ }
+
+ logger.warn("No suitable repository access implementation for session {} ", session);
+ return null;
+ }
+
+ protected void bindRepositoryAccess(RepositoryAccess repositoryAccess) {
+ synchronized (accessors) {
+ accessors.add(repositoryAccess);
+ }
+ }
+
+ protected void unbindRepositoryAccess(RepositoryAccess repositoryAccess) {
+ synchronized (repositoryAccess) {
+ accessors.remove(repositoryAccess);
+ }
+ }
+}
Added: incubator/stanbol/trunk/cmsadapter/crx-rmi/pom.xml
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/crx-rmi/pom.xml?rev=1098099&view=auto
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/crx-rmi/pom.xml (added)
+++ incubator/stanbol/trunk/cmsadapter/crx-rmi/pom.xml Sat Apr 30 11:18:30 2011
@@ -0,0 +1,87 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <artifactId>org.apache.stanbol.cmsadapter.parent</artifactId>
+ <groupId>org.apache.stanbol</groupId>
+ <version>0.9-SNAPSHOT</version>
+ <relativePath>../parent</relativePath>
+ </parent>
+
+ <groupId>org.apache.stanbol</groupId>
+ <artifactId>crx-rmi</artifactId>
+ <packaging>bundle</packaging>
+
+ <name>Apache Stanbol CMS Adapter CRX-RMI Fragment Bundle</name>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <extensions>true</extensions>
+ <configuration>
+ <instructions>
+ <Embed-Dependency>crx-rmi</Embed-Dependency>
+ <Import-Package>
+ !com.day.crx.io.*,
+ com.day.crx.rmi.client,
+ com.day.crx.rmi.remote,
+ com.day.crx.rmi.server,
+ !com.day.crx,
+ *
+ </Import-Package>
+ <Export-Package>
+ com.day.crx.rmi.client,
+ com.day.crx.rmi.remote,
+ com.day.crx.rmi.server
+ </Export-Package>
+ <!-- FIXME Bundle symbolic name should be re-considered. -->
+ <Fragment-Host>org.apache.stanbol.org.apache.stanbol.cmsadapter.jcr</Fragment-Host>
+ </instructions>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-scr-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+
+ <dependencies>
+ <dependency>
+ <groupId>com.day</groupId>
+ <artifactId>crx-rmi</artifactId>
+ <version>2.2.0</version>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-jcr-rmi</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-jcr-commons</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
+ </dependencies>
+
+ <repositories>
+ <repository>
+ <releases>
+ <updatePolicy>always</updatePolicy>
+ </releases>
+ <snapshots>
+ <updatePolicy>always</updatePolicy>
+ </snapshots>
+ <id>local-crx-repo</id>
+ <name>local-crx-repo</name>
+ <url>file://localhost/${project.basedir}/../crx-rmi/src/main/resources/local-maven-repository</url>
+ </repository>
+ </repositories>
+</project>
Propchange: incubator/stanbol/trunk/cmsadapter/crx-rmi/pom.xml
------------------------------------------------------------------------------
svn:executable = *
Added: incubator/stanbol/trunk/cmsadapter/crx-rmi/src/main/resources/local-maven-repository/com/day/crx-rmi/2.2.0/crx-rmi-2.2.0.jar
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/crx-rmi/src/main/resources/local-maven-repository/com/day/crx-rmi/2.2.0/crx-rmi-2.2.0.jar?rev=1098099&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/stanbol/trunk/cmsadapter/crx-rmi/src/main/resources/local-maven-repository/com/day/crx-rmi/2.2.0/crx-rmi-2.2.0.jar
------------------------------------------------------------------------------
svn:executable = *
Propchange: incubator/stanbol/trunk/cmsadapter/crx-rmi/src/main/resources/local-maven-repository/com/day/crx-rmi/2.2.0/crx-rmi-2.2.0.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: incubator/stanbol/trunk/cmsadapter/crx-rmi/src/main/resources/local-maven-repository/com/day/crx-rmi/2.2.0/crx-rmi-2.2.0.pom.lastUpdated
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/crx-rmi/src/main/resources/local-maven-repository/com/day/crx-rmi/2.2.0/crx-rmi-2.2.0.pom.lastUpdated?rev=1098099&view=auto
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/crx-rmi/src/main/resources/local-maven-repository/com/day/crx-rmi/2.2.0/crx-rmi-2.2.0.pom.lastUpdated (added)
+++ incubator/stanbol/trunk/cmsadapter/crx-rmi/src/main/resources/local-maven-repository/com/day/crx-rmi/2.2.0/crx-rmi-2.2.0.pom.lastUpdated Sat Apr 30 11:18:30 2011
@@ -0,0 +1,18 @@
+#NOTE: This is an internal implementation file, its format can be changed without prior notice.
+#Fri Mar 11 16:50:24 EET 2011
+file\://localhost//home/suat/Desktop/misc_files/srdc/IKS/codes/googleCodeRepo/iks-project/sandbox/ontogen/trunk/crx-rmi/../eu.iksproject.ontogen.parent/src/main/resources/local-maven-repository/.error=
+http\://download.java.net/maven/2/.lastUpdated=1299852527164
+http\://repository.apache.org/content/groups/snapshots-group/.error=
+http\://repository.apache.org/content/groups/snapshots-group/.lastUpdated=1299852526741
+http\://download.java.net/maven/2/.error=
+http\://repository.springsource.com/maven/bundles/external/.error=
+default-https\://maven.nuxeo.org/nexus/content/groups/public-snapshot/.lastUpdated=1299658738129
+file\://localhost//home/suat/Desktop/misc_files/srdc/IKS/codes/googleCodeRepo/iks-project/sandbox/ontogen/trunk/crx-rmi/../eu.iksproject.ontogen.parent/src/main/resources/local-maven-repository/.lastUpdated=1299854776003
+file\://localhost//home/suat/Desktop/misc_files/srdc/IKS/codes/googleCodeRepo/iks-project/sandbox/ontogen/trunk/crx-rmi/../crx-rmi/src/main/resources/local-maven-repository/.error=
+http\://repository.springsource.com/maven/bundles/external/.lastUpdated=1299852527587
+http\://repo1.maven.org/maven2/.lastUpdated=1299852528459
+http\://repo1.maven.org/maven2/.error=
+file\://localhost//home/suat/Desktop/misc_files/srdc/IKS/codes/googleCodeRepo/iks-project/sandbox/ontogen/trunk/crx-rmi/../crx-rmi/src/main/resources/local-maven-repository/.lastUpdated=1299855024881
+http\://repository.sonatype.org/content/groups/flexgroup/.error=
+https\://maven.nuxeo.org/nexus/content/groups/public-snapshot/.error=Could not transfer artifact com.day\:crx-rmi\:pom\:2.2.0 from maven.nuxeo.public-snapshot (https\://maven.nuxeo.org/nexus/content/groups/public-snapshot/)\: No response received after 60000
+http\://repository.sonatype.org/content/groups/flexgroup/.lastUpdated=1299852528103
Propchange: incubator/stanbol/trunk/cmsadapter/crx-rmi/src/main/resources/local-maven-repository/com/day/crx-rmi/2.2.0/crx-rmi-2.2.0.pom.lastUpdated
------------------------------------------------------------------------------
svn:executable = *
Added: incubator/stanbol/trunk/cmsadapter/crx-rmi/src/main/resources/local-maven-repository/com/day/crx-rmi/maven-metadata-local.xml
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/crx-rmi/src/main/resources/local-maven-repository/com/day/crx-rmi/maven-metadata-local.xml?rev=1098099&view=auto
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/crx-rmi/src/main/resources/local-maven-repository/com/day/crx-rmi/maven-metadata-local.xml (added)
+++ incubator/stanbol/trunk/cmsadapter/crx-rmi/src/main/resources/local-maven-repository/com/day/crx-rmi/maven-metadata-local.xml Sat Apr 30 11:18:30 2011
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata>
+ <groupId>com.day</groupId>
+ <artifactId>crx-rmi</artifactId>
+ <version>2.2.0</version>
+ <versioning>
+ <versions>
+ <version>2.2.0</version>
+ </versions>
+ <lastUpdated>20110308154602</lastUpdated>
+ </versioning>
+</metadata>
Propchange: incubator/stanbol/trunk/cmsadapter/crx-rmi/src/main/resources/local-maven-repository/com/day/crx-rmi/maven-metadata-local.xml
------------------------------------------------------------------------------
svn:executable = *
Added: incubator/stanbol/trunk/cmsadapter/jcr/pom.xml
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/jcr/pom.xml?rev=1098099&view=auto
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/jcr/pom.xml (added)
+++ incubator/stanbol/trunk/cmsadapter/jcr/pom.xml Sat Apr 30 11:18:30 2011
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.stanbol</groupId>
+ <artifactId>org.apache.stanbol.cmsadapter.parent</artifactId>
+ <version>0.9-SNAPSHOT</version>
+ <relativePath>../parent</relativePath>
+ </parent>
+
+ <groupId>org.apache.stanbol</groupId>
+ <artifactId>org.apache.stanbol.cmsadapter.jcr</artifactId>
+ <packaging>bundle</packaging>
+
+ <name>Apache Stanbol CMS Adapter JCR Bundle</name>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <extensions>true</extensions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-scr-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.stanbol</groupId>
+ <artifactId>org.apache.stanbol.cmsadapter.servicesapi</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.scr.annotations</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-jcr-rmi</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>javax.jcr</groupId>
+ <artifactId>jcr</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-simple</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.hp.hpl.jena</groupId>
+ <artifactId>jena</artifactId>
+ </dependency>
+ </dependencies>
+
+</project>
+
Propchange: incubator/stanbol/trunk/cmsadapter/jcr/pom.xml
------------------------------------------------------------------------------
svn:executable = *
Added: incubator/stanbol/trunk/cmsadapter/jcr/src/main/java/org/apache/stanbol/cmsadapter/jcr/processor/ConceptBridgesProcesser.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/jcr/src/main/java/org/apache/stanbol/cmsadapter/jcr/processor/ConceptBridgesProcesser.java?rev=1098099&view=auto
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/jcr/src/main/java/org/apache/stanbol/cmsadapter/jcr/processor/ConceptBridgesProcesser.java (added)
+++ incubator/stanbol/trunk/cmsadapter/jcr/src/main/java/org/apache/stanbol/cmsadapter/jcr/processor/ConceptBridgesProcesser.java Sat Apr 30 11:18:30 2011
@@ -0,0 +1,101 @@
+package org.apache.stanbol.cmsadapter.jcr.processor;
+
+import java.util.List;
+
+import org.apache.stanbol.cmsadapter.servicesapi.helper.MappingModelParser;
+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;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.CMSObject;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated.DObject;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated.DObjectAdapter;
+import org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccessException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.hp.hpl.jena.ontology.OntClass;
+
+public class ConceptBridgesProcesser extends JCRProcessor {
+
+ private static final Logger logger = LoggerFactory.getLogger(ConceptBridgesProcesser.class);
+
+ public ConceptBridgesProcesser(MappingEngine mappingEngine) {
+ super(mappingEngine);
+ }
+
+ public void processUpdates(List<CMSObject> cmsObjects) {
+ BridgeDefinitions bridgeDefinitions = engine.getBridgeDefinitions();
+ DObjectAdapter adapter = engine.getDObjectAdapter();
+ List<ConceptBridge> conceptBridges = MappingModelParser.getConceptBridges(bridgeDefinitions);
+
+ for (ConceptBridge bridge : conceptBridges) {
+ try {
+ boolean subsumptionExists = bridge.getQuery().endsWith("/%");
+ for (CMSObject cmsObject : cmsObjects) {
+ if (matches(cmsObject.getPath(), bridge.getQuery())) {
+ processConceptBridge(engine, subsumptionExists, adapter.wrapAsDObject(cmsObject),
+ bridge);
+ }
+ }
+ } catch (RepositoryAccessException e) {
+ logger.warn("Can not process one of the bridges", e);
+ }
+ }
+ }
+
+ public void processBridges() {
+
+ BridgeDefinitions bridgeDefinitions = engine.getBridgeDefinitions();
+ DObjectAdapter adapter = engine.getDObjectAdapter();
+ List<ConceptBridge> conceptBridges = MappingModelParser.getConceptBridges(bridgeDefinitions);
+
+ for (ConceptBridge bridge : conceptBridges) {
+ try {
+ List<CMSObject> cmsObjects = this.accessor.getNodeByPath(bridge.getQuery(), session);
+ boolean subsumptionExists = bridge.getQuery().endsWith("/%");
+ for (CMSObject classificationObject : cmsObjects) {
+ processConceptBridge(engine, subsumptionExists,
+ adapter.wrapAsDObject(classificationObject), bridge);
+ }
+ } catch (RepositoryAccessException e) {
+ logger.warn("Can not process one of the bridges", e);
+ }
+ }
+ }
+
+ public void processConceptBridge(MappingEngine mappingEngine,
+ boolean subsumptionExists,
+ DObject cmsObject,
+ ConceptBridge conceptBridge) throws RepositoryAccessException {
+
+ OntClass c = ontologyResourceHelper.createOntClassByCMSObject(cmsObject.getInstance());
+
+ if (subsumptionExists) {
+ // if the processed node is located in sublevels add it as a subclass to parent
+ DObject parentObject = cmsObject.getParent();
+ if (parentObject != null) {
+ OntClass parentClass = ontologyResourceHelper.createOntClassByCMSObject(parentObject
+ .getInstance());
+ parentClass.addSubClass(c);
+ }
+ }
+
+ // If SubsumptionBridgeExists....
+ List<SubsumptionBridge> subsumptionBridgeList = conceptBridge.getSubsumptionBridge();
+ SubsumptionBridgesProcesser sbp = new SubsumptionBridgesProcesser(mappingEngine);
+ for (SubsumptionBridge bridge : subsumptionBridgeList) {
+ // create subsumptionrelationships....
+ sbp.processSubsumptionBridge(c, bridge, cmsObject);
+ }
+
+ // If PropertyBridges Exist.....
+ List<PropertyBridge> propertyBridgeList = conceptBridge.getPropertyBridge();
+ PropertyBridgesProcesser pbp = new PropertyBridgesProcesser(mappingEngine);
+ for (PropertyBridge bridge : propertyBridgeList) {
+ // create subsumptionrelationships....
+ pbp.processConceptPropertyBridge(c, bridge, cmsObject);
+ }
+ }
+}