Hi all,

I want to share the ideas that are emerged from our talk with Rupert about CMS Adapter. I will appreciate your further ideas and comments.

Its current documentation is available at [1]. As a summary, main functionality of this component is generating a ontology based on the structure of a CMS. It uses predefined bridges to generate the ontology e.g ConceptBridge is used generate class hierarchy and InstanceBridge is used generate individuals.

We would like to improve this component in the following ways:

1) For the time being it uses a model generated from an XSD Schema to represent CMS nodes We decided to add an RDF processing mechanism. First, we will define a simple vocabulary representing CMS nodes.

2) There will be bidirectional bridges meaning that it will be possible to update content management system based on the RDF data and bridges. Having the following data,

<node1> rdf:type vCard:Event
<node1> rdfs:label "Community Workshop Paris"
<node1> vCard:participant <node2>
<node2> rdf:type vCard:Agent
<node2> rdfs:label "SRDC"

Thanks to a bridge definitions vCard:Event and vCard:Agent typed resources will be created nodes in CMS and an hierarchy between them can be set. This will be done by first annotating RDF with cms vocabulary and then storing it to CMS. If a CMS node already exists, it will be updated with the new annotations. cms vocabulary annotated RDF would be like the following:

<node1> rdf:type cms:Node
<node1> cms:path "{path}"
<node1> rdf:type vCard:Event
<node1> rdfs:label "Community Workshop Paris"
<node1> vCard:participant <node2>
<node2> rdf:type cms:Node
<node2> cms:parent <node1>
<node2> cms:path "{path}"
<node2> rdf:type vCard:Agent
<node2> rdfs:label "SRDC"

I attach the raw discussion at the bottom of the mail.

Best,
Suat

[1] http://wiki.iks-project.eu/index.php/CMS_Adaptor










IRC #stanbol 2011-07-28

08:09
suat
westei I was thinking about the RDF representation of content items that are supplied to CMS Adapter, but I could not decide whether I should directly reflect our current model to RDF or assume that they can be represented with a set of triples having same subject and any custom predicates?

08:09
suat
What was the idea you had in your mind in Paris?

08:10
westei
thats a good question

08:10
suat
Because representing CMS objects in our model it seems not to be an easy way

08:10
westei
What is "our model"?
the current XSD for the CMS Adapter converted in RDF?

08:10
suat
the model generated from xsd
yes

08:11
westei
Lets not think in "models" but in Usage Scenarios
maybe this helps
having a 1:1 mapping of the CMS to RDF would make it easy to implement the CMS Adapter, but one would need to write Processors for each and every CMS
As we want to bring semantic capabilities to CMS we are intersted in:
* the structure of the CMS (hierarchy, links, ...)
* storing Knowledge to the CMS (basically JSON-LD like stuff) and mapping them to hierarchy, links, paths ... * maybe storing knowledge (ala "named graphs") as Document (serialized RDF graph) in the CMS
* retrieving Documents + metadata from the CMS and enhancing them
any more?

08:18
suat
those are good points.
but they seem a bit high level for me
while mapping hierarchy and links to an ontology for example

08:20
westei
The CMS Adapter has several internal functionalities/components

08:20
suat
again the representation of CMS in RDF is not clear for me

08:20
westei
* the thing that connects to the CMS (incl. the RESTful Service CMS can connect)
* the component that converts this to the XSD (in future RDF)
* the procesors that convert the data and send it to the target
correct?

08:21
suat
yes
when first executing bridges for JCR and CMIS it is not necessary to provide any input in XSD model according path in the bridge definition objects are retrieved from CMS directly in case of any update or delete we expect input in XSD model for the time being

08:24
westei
ok than replace the XSD in the second line with an Java Object Model and add the XSD stuff to the RESTful service but because of the Java Object Model is a JAXB generated one - for me it is the same
To support all above use cases this workflow needs to be bidirectional
I think the CMS Adapter should come with a "RDF schema" that can describe typically CMS things
like the jcr namespace
this would replace the current XSD schema (i guess)

08:29
suat
I started create such a schema mainly based on the fields of object in the current model for example a cmsobject has a uniqueID, localName, path, properties, children

08:29
westei
At least the RESTful service would need it anyway
One would need to have a detailed look on that

08:30
suat
but it seemed to me to represent CMS objects in this way would require same effort with creating an ontology from the CMS

08:30
westei
e.g. do you really need "property"=
properties are outgoing rdf triples
children are also outgoing rdf triples

08:31
suat
I wanted clarify this representation actually in my initial question

08:32
westei
so we come back to the point where the Rubber hits the Road ^^

08:32
suat
then you see CMS objects as a set of triples having same subject and custom predicates

08:32
westei
I think so
e.g. a node with a children node could be represented in rdf like
<node1> rdf:type cms:Node
<node1> cms:path "{path}"
<node1> rdf:type vCard:Event
<node1> rdfs:label "Community Workshop Paris"
<node1> vCard:participant <node2>
<node2> rdf:type cms:Node
<node2> cms:parent <node1>
<node2> cms:path "{path}"
<node2> rdf:type vCard:Agent
<node2> rdfs:label "SRDC"
...

08:37
suat
Yes, I see

08:37
westei
and if you get the Event data without the "cms" annotations ....
1. search for the URI in the CMS
assume found
2. get the mappings (Bridge) for the type of the object
3. annotate the incomming data with the according cms properties
4. send it to the callback RESTful service of the CMS
assume not found
2. get the Bridge for this type of RDF data (e.g. based on the type but might be also other things)
3. the bridge should tell the parent node for creating this additional one
so users of the CMS Adapter would have two possibilities to use it
a) create bridges (configurations) that let the CMS Adapter now how to deal with RDF data
b) send already annodated RDF to the CMS adapter
BTW there could also be an "mode" that tells the CMS adapter to serialize the parsed RDF and store it as a document in the CMS

08:43
suat
I think you mean a set of nodes right?

08:44
westei
in respect to what?

08:44
suat
I mean after parsing RDF, hiearchies or seperate nodes can be created in CMS according structure of RDF

08:45
westei
In the case of the Event Example as used above -> when parsing the whole RDF data of the IKS Community Workshop in Paris a lot of nodes in the CMS would be updated/created

08:46
suat
Ok I see

08:47
westei
I think the RDF Path Language could maybe useful to define such mappings http://code.google.com/p/kiwi/wiki/RdfPathLanguage

08:48
suat
Yes, another point I wanted clarify was feature of these bridge
As far as I see you foresee that bridges would react according types of nodes

08:48
westei
e.g.
participant = vCard:participant :: cms:Node
would say store values of the property vCard:participant as a child node with the name "participant" if we use the same path language also for the semantic indexing, this could be really a cool thing To answer "As far as I see you foresee that bridges would react according types of nodes" I would assume that the "rdf:type" property is very ofter used to match Bridges, but I think to make bridges only to react on this would be an over simplification
e.g.
Lets assume we have Events of IKS and APACHE
you might want to store IKS Events under a different parent node than APACHE Events With the RDF Path Language one could do that (see section about Resource Path Value Tests)

09:05
suat
Then we will have a bridge interface which provides access to RDF Path language expression specifying target RDF resources and a target path in CMS representing location where nodes will be created

09:14
westei
I think it is the best to start with:
* defining the "cms" ontology
* basic mappings (as in the example above)
basically moving the current functionality over to RDF
next I would add
* bidirectional stuff with simple mappings
  * using Bridges to store unannotated RDF in the CMS
   * storing/update the CMS based on annotated RDF
this subset is much easier to implement and I think such a demo would generate a lot of interest only if this is working I would start with the more complex things (e.g. by using the RDF Path language Sebastian an I are on vacation until September and I think we will also to start than to move LMF functionalities over to Stanbol

09:20
suat
Yes I read that thread
Now things are more clear in my mind. Thanks for the ideas
I had difficulties to estimate really useful requirements

09:21
westei
I see the CMS Adapter as an central component for that, because currently the LMF is its own CMS, but than it will need a possibility to store its data to a real CMS -> the CMS Adapter could be exactly this interface/component

- - -

14:29
suat
I was preparing the mail but I think there are unclear parts in my mind.
First do you have that simple example about event and participant

14:29
westei
ok ... was just a reminder
no I typed it directly to the IRC
I can past it again If you need it
paste

14:30
suat
<node1> rdf:type cms:Node
<node1> cms:path "{path}"
<node1> rdf:type vCard:Event
<node1> rdfs:label "Community Workshop Paris"
<node1> vCard:participant <node2>
<node2> rdf:type cms:Node
<node2> cms:parent <node1>
<node2> cms:path "{path}"
<node2> rdf:type vCard:Agent
<node2> rdfs:label "SRDC"
it was like that
my question is:
will we assume that RDF will have cms related properties such as cms:Node, cms:path etc?

14:31
westei
you mean the RDF as parsed to the CMS Adapter?

14:31
suat
yes

14:32
westei
users of the CMS Adapter would have two possibilities to use it
08:41
a) create bridges (configurations) that let the CMS Adapter now how to deal with RDF data
08:41
b) send already annodated RDF to the CMS adapter
So basically I see both options, but option  would be the more realistic one

14:33
suat
then bridges will be used to specify resources that will be created as nodes in CMS
also to specify hierarchies between them
as you guess I mean the resources in the RDF

14:35
westei
I am imagine a Component (e.g. a Processor or maybe a bridge) that processes the parsed RDF and adds the "cms:..." annotations based on some configuration
than an other component that simple stores annotated RDF to the CMS
so we could use KRES functionality, the RDF Path Language or any other component to process parsed RDF at first we would use a simple implementation that maybe knows how to store stuff based on the rdf:type The other component - that stores the RDF to the CMS - would than be only bordered about how to store annotated RDF to a specific CMS
Here I see the CMIS, JCR and RESTful Service based implementations

14:42
suat
For JCR it easy to create custom properties but as far as I see it is not possible in CMIS

14:45
westei
than for CMIS one would need to store such things as "content" (serialized RDF)?

14:47
suat
do you mean directly storing RDF itself?

14:47
westei
yes
Serializing all RDF data you can not represent directly in the CMS and storing them as String or Document
I implemented something like that for http://fedora-commons.org/

14:49
suat
Yes, it can be stored as a document. Do you suggest it to relate some RDF with actual documents in CMIS repository?

14:50
westei
no storing the RDF data as a document (or a property or subnode ... no Idea about CMIS) within the CMIS Repository the CMS Adapter would just need to know how to lookup the RDF data for a Node I know such RDF data would be a blackbox for the CMS, but at least they would be managed by the CMS
so if Stanbol could be restored based on the data stored within the CMS

14:55
suat
14:55
Ok then. I shall complete the mail



--
Suat Gönül

Software Research, Development and Consultation Ltd.
ODTU Silikon Blok 1. Kat No:14
Middle East Technical University Campus
06531 Ankara TURKEY

Phone: +90 (312) 210 1763
Fax: +90 (312) 210 1837

Reply via email to