You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@marmotta.apache.org by ja...@apache.org on 2013/03/01 13:15:45 UTC

[20/32] MARMOTTA-109: included org.rometools:rome:1.1.1-LMF and org.rometools:rome-modules:1.5.1-LMF in source

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/f7a4e00f/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/activitystreams/types/Review.java
----------------------------------------------------------------------
diff --git a/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/activitystreams/types/Review.java b/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/activitystreams/types/Review.java
new file mode 100644
index 0000000..06df4b8
--- /dev/null
+++ b/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/activitystreams/types/Review.java
@@ -0,0 +1,69 @@
+/*
+ *  Copyright 2011 robert.cooper.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *  under the License.
+ */
+
+package org.rometools.feed.module.activitystreams.types;
+
+/**
+ * <p>The "review" object type represents a primarily prose-based
+ *          commentary on another object.
+ *</p>
+ *<p>The "review" object type is identified by the URI <tt>http://activitystrea.ms/schema/1.0/review</tt>.
+ *</p>
+ *<p>A review has the following additional components:
+ *</p>
+ *<p></p>
+ *<blockquote class="text"><dl>
+ *<dt>Title</dt>
+ *<dd>The title of the review. Represented by the
+ *              Name component of the base Object Construct. Many systems do not
+ *              have the concept of a title for a review; such systems MUST omit
+ *              the Name component. Processors SHOULD refer to such reviews as
+ *              simply being "a review", with appropriate localization, if they
+ *              are to be described in a sentence.
+ *</dd>
+ *<dt>Content</dt>
+ *<dd>The content of the comment. Represented in
+ *              JSON as a property called <tt>content</tt>
+ *              whose value is a JSON string containing a fragment of HTML that
+ *              represents the content. Publishers SHOULD include any markup
+ *              necessary to achieve a similar presentation to that on the
+ *              publisher's own HTML pages, including any links that the service
+ *              automatically adds. Processors MAY remove all HTML markup and
+ *              consider the comment to be plain text.
+ *</dd>
+ *<dt>Reviewed Object</dt>
+ *<dd>The Object Construct representing
+ *              the item that this review applies to. Represented as the In
+ *              Reply To Object component of the base Object Construct.
+ *</dd>
+ *<dt>Rating</dt>
+ *<dd>A rating for the item, given as a number
+ *              between 1.0 and 5.0 inclusive with one decimal place of
+ *              precision. Represented in JSON as a property called <tt>rating</tt> whose value is a JSON number giving
+ *              the rating.
+ *</dd>
+ *</dl></blockquote>
+ * @author robert.cooper
+ */
+public class Review extends ActivityObject {
+
+    @Override
+    public String getTypeIRI() {
+        return "http://activitystrea.ms/schema/1.0/review";
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/f7a4e00f/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/activitystreams/types/Service.java
----------------------------------------------------------------------
diff --git a/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/activitystreams/types/Service.java b/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/activitystreams/types/Service.java
new file mode 100644
index 0000000..b7d5584
--- /dev/null
+++ b/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/activitystreams/types/Service.java
@@ -0,0 +1,51 @@
+/*
+ *  Copyright 2011 robert.cooper.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *  under the License.
+ */
+
+package org.rometools.feed.module.activitystreams.types;
+
+/**
+ * <p>The "service" Object type represents a website, personal website
+ *          or blog, business, brand, or other entity that performs some kind of
+ *          work for other entities, people, or services, or acts as kind of
+ *          container for other objects.
+ *</p>
+ *<p>The "service" Object type is identified by the URI <tt>http://activitystrea.ms/schema/1.0/service</tt>.
+ *</p>
+ *<p>A service has the following additional components:
+ *</p>
+ *<p></p>
+ *<blockquote class="text"><dl>
+ *<dt>icon</dt>
+ *<dd>A Media Link Construct representing a link to
+ *              a small image representing the service. Represented in JSON as a
+ *              property named <tt>icon</tt> whose value is a
+ *              JSON object with properties as defined in [TODO: xref the JSON
+ *              serialization of a Media Link Construct]. The linked image MUST
+ *              have an aspect ratio of one (horizontal) to one (vertical) and
+ *              SHOULD be suitable for presentation at a small size.
+ *</dd>
+ *</dl></blockquote>
+ * @author robert.cooper
+ */
+public class Service extends ActivityObject {
+
+    @Override
+    public String getTypeIRI() {
+        return "http://activitystrea.ms/schema/1.0/service";
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/f7a4e00f/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/activitystreams/types/Song.java
----------------------------------------------------------------------
diff --git a/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/activitystreams/types/Song.java b/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/activitystreams/types/Song.java
new file mode 100644
index 0000000..d6be3ef
--- /dev/null
+++ b/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/activitystreams/types/Song.java
@@ -0,0 +1,62 @@
+/*
+ *  Copyright 2011 robert.cooper.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *  under the License.
+ */
+package org.rometools.feed.module.activitystreams.types;
+
+
+/**
+ * <p>The "song" Object type represents a song or a recording of a
+ *          song.
+ *</p>
+ *<p>Objects of type Song might contain information about the song or
+ *          recording, or they might contain some representation of the
+ *          recording itself. In the latter case, the song SHOULD also be
+ *          annotated with the "audio" object type as described in <a class='info' href='#audio'>Section&nbsp;3.2.2<span> (</span><span class='info'>Audio</span><span>)</span></a> and use its properties. This type should only
+ *          be used when the publisher can guarantee that the object is a song
+ *          rather than merely a generic audio stream.
+ *</p>
+ *<p>The Object type URL for the "song" Object type is <tt>http://activitystrea.ms/schema/1.0/song</tt>.
+ *</p>
+ *<p>A song has no additional components.
+ *</p>
+ * @author robert.cooper
+ */
+public class Song extends ActivityObject {
+    private Audio audio;
+
+    /**
+     * Set the value of audio
+     *
+     * @param newaudio new value of audio
+     */
+    public void setAudio(Audio newaudio) {
+        this.audio = newaudio;
+    }
+
+    /**
+     * Get the value of audio
+     *
+     * @return the value of audio
+     */
+    public Audio getAudio() {
+        return this.audio;
+    }
+
+    @Override
+    public String getTypeIRI() {
+        return "http://activitystrea.ms/schema/1.0/song";
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/f7a4e00f/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/activitystreams/types/Status.java
----------------------------------------------------------------------
diff --git a/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/activitystreams/types/Status.java b/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/activitystreams/types/Status.java
new file mode 100644
index 0000000..7636474
--- /dev/null
+++ b/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/activitystreams/types/Status.java
@@ -0,0 +1,46 @@
+/*
+ *  Copyright 2011 robert.cooper.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *  under the License.
+ */
+
+package org.rometools.feed.module.activitystreams.types;
+
+/**
+ * <p>The "status" Object type represents a human-readable update of
+ *          the author's situation, mood, location or other status.
+ *</p>
+ *<p>A status is similar in structure to a note, but carries the
+ *          additional meaning that the content is primarily describing
+ *          something its author is doing, feeling or experiencing.
+ *</p>
+ *<p>A consumers MAY consider the content of the most recent status
+ *          object it encountered to be the user's current status, unless the
+ *          most recent status update is old. When a status becomes too old is
+ *          not defined by this specification.
+ *</p>
+ *<p>The "status" object type is identified by the URI <tt>http://activitystrea.ms/schema/1.0/status</tt>.
+ *</p>
+ *<p>A status has the same components as a note.
+ *</p>
+ * @author robert.cooper
+ */
+public class Status extends ActivityObject {
+
+    @Override
+    public String getTypeIRI() {
+        return "http://activitystrea.ms/schema/1.0/status";
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/f7a4e00f/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/activitystreams/types/Verb.java
----------------------------------------------------------------------
diff --git a/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/activitystreams/types/Verb.java b/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/activitystreams/types/Verb.java
new file mode 100644
index 0000000..9f2b0f3
--- /dev/null
+++ b/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/activitystreams/types/Verb.java
@@ -0,0 +1,205 @@
+/*
+ *  Copyright 2011 robert.cooper.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the icense for the specific language governing permissions and
+ *  limitations under the License.
+ *  under the License.
+ */
+package org.rometools.feed.module.activitystreams.types;
+
+
+/**
+ *
+ * @author robert.cooper
+ */
+public enum Verb {
+    /**
+     * The "mark as favorite" Verb indicates that the Subject marked the Object as an item of
+     * special interest. Objects so marked often appear in a collection of such Objects which
+     * MAY be published as a feed of entries annotated with this Verb.
+     * If a particular service uses favorites as a mechanism by which a user can recall
+     * items that were earlier marked, it MAY be appropriate to also mark activities of
+     * this type with the "save" Verb as described in Section 3.1.8.
+     * The verb URI for the "mark as favorite" Verb is http://activitystrea.ms/schema/1.0/favorite.
+     */
+    MARK_AS_FAVORITE("http://activitystrea.ms/schema/1.0/favorite"),
+    /**
+     * The "start following" Verb indicates that the Subject began following the activity
+     * of the Object. In most cases, the Object of this Verb will be a user, but it can
+     * potentially be of any type that can sensibly generate activity.
+     *
+     * The verb URI for the "start following" Verb is http://activitystrea.ms/schema/1.0/follow.
+     *
+     * Processors MAY ignore (silently drop) successive identical "start following" activities
+     * regardless of whether they maintain state sufficient to determine (A), (B), or (C) above.
+     */
+    START_FOLLOWING("http://activitystrea.ms/schema/1.0/follow"),
+    /**
+     * The "mark as liked" verb indicates that the actor indicated that it likes the object.
+     *
+     * The verb URI for the "mark as liked" Verb is http://activitystrea.ms/schema/1.0/like.
+     */
+    MARK_AS_LIKED("http://activitystrea.ms/schema/1.0/like"),
+    /**
+     * The "make friend" Verb indicates the creation of a friendship that is reciprocated by the object.
+     *
+     * Since this verb implies an activity on the part of its object, processors MUST NOT accept
+     * activities with this Verb unless they are able to verify through some external means that
+     * there is in fact a reciprocated connection. For example, a processor MAY have received a
+     * guarantee from a particular publisher that the publisher will only use this Verb in cases
+     * where a reciprocal relationship exists.
+     *
+     * The verb URI for the "make friend" Verb is http://activitystrea.ms/schema/1.0/make-friend.
+     */
+    MAKE_FRIEND("http://activitystrea.ms/schema/1.0/make-friend"),
+    /**
+     * The "join" Verb indicates that the actor has become a member of the Object.
+     * This specification only defines the meaning of this Verb when its Object is a Group,
+     * though implementors SHOULD be prepared to handle other Object types as meaning
+     * MAY be provided by extension specifications.
+     *
+     * Processors MAY ignore (silently drop) successive identical "join" activities
+     * regardless of whether they maintain state sufficient to determine (A) or (B) above.
+     *
+     * The "join" Verb is identified by the URI http://activitystrea.ms/schema/1.0/join.
+     */
+    JOIN("http://activitystrea.ms/schema/1.0/join"),
+    /**
+     * The "play" verb indicates that the subject spent some time enjoying the object.
+     * For example, if the object is a video this indicates that the subject watched all or part of the video.
+     *
+     * The "play" Verb is identified by the URI http://activitystrea.ms/schema/1.0/play.
+     */
+    PLAY("http://activitystrea.ms/schema/1.0/play"),
+    /**
+     * The "Post" Verb is described in section 8 of the AtomActivity specification.
+     * It is only referenced here for completeness.
+     *
+     * http://activitystrea.ms/schema/1.0/post
+     */
+    POST("http://activitystrea.ms/schema/1.0/post"),
+    /**
+     * The "save" Verb indicates that the Subject has called out the Object as being of
+     * interest primarily to him- or herself. Though this action MAY be shared publicly,
+     * the implication is that the Object has been saved primarily for the actor's own
+     * benefit rather than to show it to others as would be indicated by the "share"
+     * Verb (Section 3.1.9).
+     *
+     * The "save" Verb is identified by the URI http://activitystrea.ms/schema/1.0/save.
+     */
+    SAVE("http://activitystrea.ms/schema/1.0/save"),
+    /**
+     * The "share" Verb indicates that the Subject has called out the Object to readers.
+     * In most cases, the actor did not create the Object being shared, but is instead
+     * drawing attention to it.
+     *
+     * The "share" Verb is identified by the URI http://activitystrea.ms/schema/1.0/share.
+     */
+    SHARE("http://activitystrea.ms/schema/1.0/share"),
+    /**
+     * The "tag" verb indicates that the actor has identified the presence of a target
+     * inside another object. For example, the actor may have specified that a particular
+     * user appears in a photo.
+     *
+     * The "tag" verb is identified by the URI http://activitystrea.ms/schema/1.0/tag.
+     *
+     * The target of the "tag" verb gives the object in which the tag has been added.
+     * For example, if a user appears in a photo, the activity:object is the user and
+     * the activity:target is the photo.
+     */
+    TAG("http://activitystrea.ms/schema/1.0/tag"),
+    /**
+     * The "update" Verb indicates that the Subject has modified the referenced Object.
+     *
+     * Implementors SHOULD use verbs such as Section 3.1.7 where the Subject is adding
+     * new items to a Section 3.2.8 or similar. Update is reserved for modifications
+     * to existing Objects or data such as changing a user's profile information.
+     *
+     * The "update" Verb is identified by the URI http://activitystrea.ms/schema/1.0/update.
+     */
+    UPDATE("http://activitystrea.ms/schema/1.0/update"),
+    /**
+     *
+     *<p>The "positive RSVP" verb indicates that the actor has made a
+     *          positive RSVP for the object. This specification only defines the
+     *          meaning of this verb when its object is an event (see <a class='info' href='#event'>Section&nbsp;4.2.1<span> (</span><span class='info'>Event</span><span>)</span></a>), though implementors SHOULD be prepared to
+     *          handle other object types as meaning MAY be provided by extension
+     *          specifications.
+     *</p>
+     *<p>The use of this Verb is only appropriate when the RSVP was
+     *          created by an explicit action by the actor. It is not appropriate to
+     *          use this verb when a user has been added as an attendee by an event
+     *          organiser or administrator.
+     *</p>
+     *<p>The verb URI for the "positive RSVP" Verb is <tt>http://activitystrea.ms/schema/1.0/rsvp-yes</tt>.
+     *</p>
+     */
+    RSVP_YES("http://activitystrea.ms/schema/1.0/rsvp-yes"),
+    /**
+     * <p>The "possible RSVP" verb indicates that the actor has made a
+     *          possible RSVP for the object. This specification only defines the
+     *          meaning of this verb when its object is an event (see <a class='info' href='#event'>Section&nbsp;4.2.1<span> (</span><span class='info'>Event</span><span>)</span></a>), though implementors SHOULD be prepared to
+     *          handle other object types as meaning MAY be provided by extension
+     *          specifications.
+     *</p>
+     *<p>The use of this Verb is only appropriate when the RSVP was
+     *          created by an explicit action by the actor. It is not appropriate to
+     *          use this verb when a user has been added as an attendee by an event
+     *          organiser or administrator.
+     *</p>
+     *<p>The verb URI for the "possible RSVP" Verb is <tt>http://activitystrea.ms/schema/1.0/rsvp-maybe</tt>.
+     *</p>
+     */
+    RSVP_MAYBE("http://activitystrea.ms/schema/1.0/rsvp-maybe"),
+    /**
+     * <p>The "negative RSVP" verb indicates that the actor has made a
+     *          negative RSVP for the object. This specification only defines the
+     *          meaning of this verb when its object is an event (see <a class='info' href='#event'>Section&nbsp;4.2.1<span> (</span><span class='info'>Event</span><span>)</span></a>), though implementors SHOULD be prepared to
+     *          handle other object types as meaning MAY be provided by extension
+     *          specifications.
+     *</p>
+     *<p>The use of this Verb is only appropriate when the RSVP was
+     *          created by an explicit action by the actor. It is not appropriate to
+     *          use this verb when a user has been added as an attendee by an event
+     *          organiser or administrator.
+     *</p>
+     *<p>The verb URI for the "negative RSVP" Verb is <tt>http://activitystrea.ms/schema/1.0/rsvp-no</tt>.
+     *</p>
+     */
+    RSVP_NO("http://activitystrea.ms/schema/1.0/rsvp-no");
+    private final String iri;
+
+    /**
+     * @param iri
+     */
+    Verb(final String iri){
+        this.iri = iri;
+    }
+
+    @Override
+    public String toString(){
+        return iri;
+    }
+    /**
+     * 
+     * @param iri
+     * @return
+     */
+    public static Verb fromIRI(String iri){
+        for(Verb v: Verb.values()){
+            if(v.toString().equals(iri)){
+                return v;
+            }
+        }
+        return null;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/f7a4e00f/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/activitystreams/types/Video.java
----------------------------------------------------------------------
diff --git a/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/activitystreams/types/Video.java b/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/activitystreams/types/Video.java
new file mode 100644
index 0000000..4044c86
--- /dev/null
+++ b/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/activitystreams/types/Video.java
@@ -0,0 +1,48 @@
+/*
+ *  Copyright 2011 robert.cooper.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *  under the License.
+ */
+
+package org.rometools.feed.module.activitystreams.types;
+
+/**
+ * <p>The "video" Object type represents video content, which usually
+ *          consists of a motion picture track and an audio track.
+ *</p>
+ *<p>The "video" Object type is identified by the URI <tt>http://activitystrea.ms/schema/1.0/video</tt>.
+ *</p>
+ *<p>A video has the following additional components:
+ *</p>
+ *<p></p>
+ *<blockquote class="text"><dl>
+ *<dt>Video Stream Link</dt>
+ *<dd>A Media Link Construct linking
+ *              to the video content itself. Represented in JSON as a property
+ *              called <tt>stream</tt> whose value is a JSON
+ *              object with properties as defined in [TODO: xref the JSON
+ *              serialization of a Media Link Construct]
+ *</dd>
+ *<dt>Embed Code</dt>
+ *<dd>An HTML fragment that, when embedded in
+ *              an HTML page, will provide an interactive player UI for the
+ *              video stream. Represented in JSON as a property called <tt>embedCode</tt> whose value is a JSON string
+ *              containing the fragment of HTML.
+ *</dd>
+ *</dl></blockquote>
+ * @author robert.cooper
+ */
+public class Video {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/f7a4e00f/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/atomthread/ThreadModule.java
----------------------------------------------------------------------
diff --git a/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/atomthread/ThreadModule.java b/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/atomthread/ThreadModule.java
new file mode 100644
index 0000000..37ef9d3
--- /dev/null
+++ b/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/atomthread/ThreadModule.java
@@ -0,0 +1,26 @@
+/*
+ *  Copyright 2011 robert.cooper.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *  under the License.
+ */
+
+package org.rometools.feed.module.atomthread;
+
+/**
+ *
+ * @author robert.cooper
+ */
+public interface ThreadModule {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/f7a4e00f/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/atomthread/package.html
----------------------------------------------------------------------
diff --git a/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/atomthread/package.html b/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/atomthread/package.html
new file mode 100644
index 0000000..74a2f12
--- /dev/null
+++ b/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/atomthread/package.html
@@ -0,0 +1,3 @@
+<html><body>
+http://www.ietf.org/rfc/rfc4685.txt
+</body></html>

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/f7a4e00f/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/base/Article.java
----------------------------------------------------------------------
diff --git a/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/base/Article.java b/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/base/Article.java
new file mode 100644
index 0000000..0c7dafc
--- /dev/null
+++ b/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/base/Article.java
@@ -0,0 +1,396 @@
+/*
+ * Article.java
+ *
+ * Created on November 16, 2005, 1:01 PM
+ *
+ * This library is provided under dual licenses.
+ * You may choose the terms of the Lesser General Public License or the Apache
+ * License at your discretion.
+ *
+ *  Copyright (C) 2005  Robert Cooper, Temple of the Screaming Penguin
+ *
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.rometools.feed.module.base;
+
+import java.util.Date;
+
+
+/**
+ * This is an interface for the GoogleBase plug in that exposes methods used for
+ * Article or News entry types.
+ * @author <a href="mailto:cooper@screaming-penguin.com">Robert "kebernet" Cooper</a>
+ * @version $Revision: 1.2 $
+ */
+public interface Article extends GlobalInterface {
+    /**
+     * Array of Author Names. Limit 10.
+     * <table border="1" cellpadding="5" cellspacing="0" width="640">
+     *
+     * <tbody><tr valign="top">
+     *  <td colspan="2" bgcolor="#dddddd" valign="top"><font size="-1">
+     *  <b><a name="author"></a>author</b></font></td>
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *  <b>Details</b></font></td>
+     *
+     *  <td><font size="-1">
+     *  Author of the item.</font></td>
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *  <b>Example</b></font></td>
+     *  <td><font size="-1"> &lt;g:author&gt;John Steinbeck&lt;/g:author&gt;</font></td>
+     *
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *  <b>Attribute of</b></font></td>
+     *  <td><font size="-1">
+     *  Reference Items, News and Articles</font></td>
+     * </tr>
+     *
+     * <tr valign="top">
+     *
+     *  <td width="120"><font size="-1">
+     *  <b>Content type</b></font></td>
+     *  <td><font size="-1">
+     *  string</font></td>
+     * </tr>
+     * </tbody></table>
+     * @param authors Array of Author Names. Limit 10.
+     */
+    public void setAuthors(String[] authors);
+
+    /**
+     * Array of Author Names. Limit 10.
+     * <table border="1" cellpadding="5" cellspacing="0" width="640">
+     *
+     * <tbody><tr valign="top">
+     *  <td colspan="2" bgcolor="#dddddd" valign="top"><font size="-1">
+     *  <b><a name="author"></a>author</b></font></td>
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *  <b>Details</b></font></td>
+     *
+     *  <td><font size="-1">
+     *  Author of the item.</font></td>
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *  <b>Example</b></font></td>
+     *  <td><font size="-1"> &lt;g:author&gt;John Steinbeck&lt;/g:author&gt;</font></td>
+     *
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *  <b>Attribute of</b></font></td>
+     *  <td><font size="-1">
+     *  Reference Items, News and Articles</font></td>
+     * </tr>
+     *
+     * <tr valign="top">
+     *
+     *  <td width="120"><font size="-1">
+     *  <b>Content type</b></font></td>
+     *  <td><font size="-1">
+     *  string</font></td>
+     * </tr>
+     * </tbody></table>
+     * @return Array of author names.
+     */
+    public String[] getAuthors();
+
+    /**
+     * Source for this article.
+     *
+     *
+     * <table border="1" cellpadding="5" cellspacing="0" width="640">
+     * <tbody><tr valign="top">
+     *
+     *  <td colspan="2" bgcolor="#dddddd"><font size="-1">
+     *  <b><a name="news_source"></a>news_source</b></font></td>
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *  <b>Details</b></font></td>
+     *
+     *  <td><font size="-1">
+     *  The source of news content.</font></td>
+     *
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *  <b>Example</b></font></td>
+     *  <td><font size="-1"> &lt;g:news_source&gt;Journal&lt;/g:news_source&gt;</font></td>
+     *
+     * </tr>
+     *
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *  <b>Attribute of</b></font></td>
+     *  <td><font size="-1">
+     *  News and Articles</font></td>
+     * </tr>
+     *
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *
+     *  <b>Content type</b></font></td>
+     *  <td><font size="-1">
+     *  string</font></td>
+     * </tr>
+     * </tbody></table>
+     * @param newsSource Source for this article
+     */
+    public void setNewsSource(String newsSource);
+
+    /**
+     * Source for this article.
+     *
+     * <table border="1" cellpadding="5" cellspacing="0" width="640">
+     * <tbody><tr valign="top">
+     *
+     *  <td colspan="2" bgcolor="#dddddd"><font size="-1">
+     *  <b><a name="news_source"></a>news_source</b></font></td>
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *  <b>Details</b></font></td>
+     *
+     *  <td><font size="-1">
+     *  The source of news content.</font></td>
+     *
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *  <b>Example</b></font></td>
+     *  <td><font size="-1"> &lt;g:news_source&gt;Journal&lt;/g:news_source&gt;</font></td>
+     *
+     * </tr>
+     *
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *  <b>Attribute of</b></font></td>
+     *  <td><font size="-1">
+     *  News and Articles</font></td>
+     * </tr>
+     *
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *
+     *  <b>Content type</b></font></td>
+     *  <td><font size="-1">
+     *  string</font></td>
+     * </tr>
+     * </tbody></table>
+     * @return source for this article.
+     */
+    public String getNewsSource();
+
+    /**
+     * Number of pages in the article.
+     *
+     * <table border="1" cellpadding="5" cellspacing="0" width="640">
+     *
+     * <tbody><tr valign="top">
+     *  <td colspan="2" bgcolor="#dddddd" valign="top"><font size="-1">
+     *  <b><a name="pages"></a>pages</b></font></td>
+     *
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *  <b>Details</b></font></td>
+     *  <td><font size="-1">
+     *
+     *  The number of pages in the publication.</font></td>
+     * </tr>
+     *
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *  <b>Example</b></font></td>
+     *  <td><font size="-1"> &lt;g:pages&gt;18&lt;/g:pages&gt;</font></td>
+     *
+     * </tr>
+     * <tr valign="top">
+     *
+     *  <td width="120"><font size="-1">
+     *  <b>Attribute of</b></font></td>
+     *  <td><font size="-1">
+     *  Reference Items, News and Articles</font></td>
+     * </tr>
+     * <tr valign="top">
+     *
+     *  <td width="120"><font size="-1">
+     *
+     *  <b>Content type</b></font></td>
+     *  <td><font size="-1">
+     *  integer</font></td>
+     * </tr>
+     * </tbody></table>
+     * @param pages Number of pages in the article
+     */
+    public void setPages(Integer pages);
+
+    /**
+     * Number of pages in the article.
+     *
+     * <table border="1" cellpadding="5" cellspacing="0" width="640">
+     *
+     * <tbody><tr valign="top">
+     *  <td colspan="2" bgcolor="#dddddd" valign="top"><font size="-1">
+     *  <b><a name="pages"></a>pages</b></font></td>
+     *
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *  <b>Details</b></font></td>
+     *  <td><font size="-1">
+     *
+     *  The number of pages in the publication.</font></td>
+     * </tr>
+     *
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *  <b>Example</b></font></td>
+     *  <td><font size="-1"> &lt;g:pages&gt;18&lt;/g:pages&gt;</font></td>
+     *
+     * </tr>
+     * <tr valign="top">
+     *
+     *  <td width="120"><font size="-1">
+     *  <b>Attribute of</b></font></td>
+     *  <td><font size="-1">
+     *  Reference Items, News and Articles</font></td>
+     * </tr>
+     * <tr valign="top">
+     *
+     *  <td width="120"><font size="-1">
+     *
+     *  <b>Content type</b></font></td>
+     *  <td><font size="-1">
+     *  integer</font></td>
+     * </tr>
+     * </tbody></table>
+     * @return Number of pages in the article
+     */
+    public Integer getPages();
+
+    /**
+     * Date article was published.
+     *
+     * <table border="1" cellpadding="5" cellspacing="0" width="640">
+     * <tbody><tr valign="top">
+     *  <td colspan="2" bgcolor="#dddddd"><font size="-1">
+     *  <b><a name="publish_date"></a>publish_date</b></font></td>
+     *
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *
+     *  <b>Details</b></font></td>
+     *  <td><font size="-1">
+     *  Date the item was published in <a href="http://www.iso.org/iso/en/prods-services/popstds/datesandtime.html">ISO 8601</a> format:
+     *              YYYY-MM-DD</font></td>
+     *
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *
+     *  <b>Example</b></font></td>
+     *  <td><font size="-1"> &lt;g:publish_date&gt;2005-12-20&lt;/g:publish_date&gt;</font></td>
+     * </tr>
+     *
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *  <b>Attribute of</b></font></td>
+     *
+     *  <td><font size="-1">
+     *  Reference Items</font></td>
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *
+     *  <b>Content type</b></font></td>
+     *  <td><font size="-1">
+     *
+     *  date</font></td>
+     * </tr>
+     * </tbody></table>
+     * @param publishDate Date article was published
+     */
+    public void setPublishDate(Date publishDate);
+
+    /**
+     *  Date article was published.
+     *
+     * <table border="1" cellpadding="5" cellspacing="0" width="640">
+     * <tbody><tr valign="top">
+     *  <td colspan="2" bgcolor="#dddddd"><font size="-1">
+     *  <b><a name="publish_date"></a>publish_date</b></font></td>
+     *
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *
+     *  <b>Details</b></font></td>
+     *  <td><font size="-1">
+     *  Date the item was published in <a href="http://www.iso.org/iso/en/prods-services/popstds/datesandtime.html">ISO 8601</a> format:
+     *              YYYY-MM-DD</font></td>
+     *
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *
+     *  <b>Example</b></font></td>
+     *  <td><font size="-1"> &lt;g:publish_date&gt;2005-12-20&lt;/g:publish_date&gt;</font></td>
+     * </tr>
+     *
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *  <b>Attribute of</b></font></td>
+     *
+     *  <td><font size="-1">
+     *  Reference Items</font></td>
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *
+     *  <b>Content type</b></font></td>
+     *  <td><font size="-1">
+     *
+     *  date</font></td>
+     * </tr>
+     * </tbody></table>
+     * @return Date article was published
+     */
+    public Date getPublishDate();
+}

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/f7a4e00f/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/base/Course.java
----------------------------------------------------------------------
diff --git a/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/base/Course.java b/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/base/Course.java
new file mode 100644
index 0000000..f4e1ce6
--- /dev/null
+++ b/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/base/Course.java
@@ -0,0 +1,567 @@
+/*
+ * CourseInformation.java
+ *
+ * Created on November 16, 2005, 11:12 AM
+ * This library is provided under dual licenses.
+ * You may choose the terms of the Lesser General Public License or the Apache
+ * License at your discretion.
+ *
+ *  Copyright (C) 2005  Robert Cooper, Temple of the Screaming Penguin
+ *
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.rometools.feed.module.base;
+
+import org.rometools.feed.module.base.types.DateTimeRange;
+
+
+/**
+ * This is an interface for the GoogleBase plug in that exposes methods used for
+ * Class or Course information entry types.
+ * @author <a href="mailto:cooper@screaming-penguin.com">Robert "kebernet" Cooper</a>
+ * @version $Revision: 1.2 $
+ */
+public interface Course extends GlobalInterface {
+    /**
+     * The timeframe a course is running.
+     *
+     *
+     * <table border="1" cellpadding="5" cellspacing="0" width="640">
+     *
+     * <tbody><tr valign="top">
+     *
+     *  <td colspan="2" bgcolor="#dddddd"><font size="-1">
+     *  <b><a name="course_date_range"></a>course_date_range</b></font></td>
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *  <b>Details</b></font></td>
+     *  <td><font size="-1">Date and time range a class is in session, in <a href="http://www.iso.org/iso/en/prods-services/popstds/datesandtime.html">ISO 8601</a>.  Two  sub-attributes
+     *  are included in course_date_range attribute.<ul type="disc">
+     *
+     *  <li>start = Start date and time of a trip in
+     *  format YYYY-MM-DDThh:mm:ss</li>
+     *  <li>end = End date and time of a trip in
+     *  format YYYY-MM-DDThh:mm:ss</li></ul></font></td>
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *  <b>Example</b></font></td>
+     *  <td><font size="-1"> &lt;g:course_date_range&gt; <br>
+     *
+     * &lt;g:start&gt;2005-12-20T09:30:01&lt;/g:start&gt;
+     *  <br>
+     * &lt;g:end&gt;2005-12-29T10:30:59&lt;/g:end&gt;<br>
+     * &lt;/g:course_date_range&gt;</font></td>
+     * </tr>
+     * <tr valign="top">
+     *
+     *  <td width="120"><font size="-1">
+     *
+     *  <b>Attribute of</b></font></td>
+     *  <td><font size="-1">
+     *  Course schedules</font></td>
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *
+     *  <b>Content type</b></font></td>
+     *
+     *  <td><font size="-1">
+     * dateTimeRange</font></td>
+     * </tr>
+     * </tbody></table>
+     * @param courseDateRange The timeframe a course is running
+     */
+    public void setCourseDateRange(DateTimeRange courseDateRange);
+
+    /**
+     * The timeframe a course is running.
+     *
+     *
+     * <table border="1" cellpadding="5" cellspacing="0" width="640">
+     *
+     * <tbody><tr valign="top">
+     *
+     *  <td colspan="2" bgcolor="#dddddd"><font size="-1">
+     *  <b><a name="course_date_range"></a>course_date_range</b></font></td>
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *  <b>Details</b></font></td>
+     *  <td><font size="-1">Date and time range a class is in session, in <a href="http://www.iso.org/iso/en/prods-services/popstds/datesandtime.html">ISO 8601</a>.  Two  sub-attributes
+     *  are included in course_date_range attribute.<ul type="disc">
+     *
+     *  <li>start = Start date and time of a trip in
+     *  format YYYY-MM-DDThh:mm:ss</li>
+     *  <li>end = End date and time of a trip in
+     *  format YYYY-MM-DDThh:mm:ss</li></ul></font></td>
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *  <b>Example</b></font></td>
+     *  <td><font size="-1"> &lt;g:course_date_range&gt; <br>
+     *
+     * &lt;g:start&gt;2005-12-20T09:30:01&lt;/g:start&gt;
+     *  <br>
+     * &lt;g:end&gt;2005-12-29T10:30:59&lt;/g:end&gt;<br>
+     * &lt;/g:course_date_range&gt;</font></td>
+     * </tr>
+     * <tr valign="top">
+     *
+     *  <td width="120"><font size="-1">
+     *
+     *  <b>Attribute of</b></font></td>
+     *  <td><font size="-1">
+     *  Course schedules</font></td>
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *
+     *  <b>Content type</b></font></td>
+     *
+     *  <td><font size="-1">
+     * dateTimeRange</font></td>
+     * </tr>
+     * </tbody></table>
+     * @return The timeframe a course is running
+     */
+    public DateTimeRange getCourseDateRange();
+
+    /**
+     * ID code associated with a course.
+     *
+     *
+     *        <table border="1" cellpadding="5" cellspacing="0" width="640">
+     *          <tbody><tr valign="top">
+     *            <td colspan="2" bgcolor="#dddddd" valign="top"> <font size="-1"><b><a name="course_number"></a>course_number</b></font></td>
+     *          </tr>
+     *          <tr valign="top">
+     *            <td width="120"> <font size="-1"><b>Details</b></font></td>
+     *
+     *            <td> <font size="-1">ID code associated with a course</font></td>
+     *
+     *          </tr>
+     *          <tr valign="top">
+     *            <td width="120"> <font size="-1"><b>Example</b></font></td>
+     *            <td> <font size="-1">&lt;g:course_number&gt;HIST-90A&lt;/g:course_number&gt;</font></td>
+     *
+     *          </tr>
+     *          <tr valign="top">
+     *
+     *            <td width="120"> <font size="-1"><b>Attribute
+     *                of</b></font></td>
+     *            <td> <font size="-1">Course schedules</font></td>
+     *          </tr>
+     *          <tr valign="top">
+     *            <td width="120"> <font size="-1"><b>Content
+     *                type</b></font></td>
+     *
+     *            <td> <font size="-1">string</font></td>
+     *
+     *          </tr>
+     *        </tbody></table>
+     * @param courseNumber ID code associated with a course
+     */
+    public void setCourseNumber(String courseNumber);
+
+    /**
+     * ID code associated with a course.
+     *
+     *
+     *
+     *        <table border="1" cellpadding="5" cellspacing="0" width="640">
+     *          <tbody><tr valign="top">
+     *            <td colspan="2" bgcolor="#dddddd" valign="top"> <font size="-1"><b><a name="course_number"></a>course_number</b></font></td>
+     *          </tr>
+     *          <tr valign="top">
+     *            <td width="120"> <font size="-1"><b>Details</b></font></td>
+     *
+     *            <td> <font size="-1">ID code associated with a course</font></td>
+     *
+     *          </tr>
+     *          <tr valign="top">
+     *            <td width="120"> <font size="-1"><b>Example</b></font></td>
+     *            <td> <font size="-1">&lt;g:course_number&gt;HIST-90A&lt;/g:course_number&gt;</font></td>
+     *
+     *          </tr>
+     *          <tr valign="top">
+     *
+     *            <td width="120"> <font size="-1"><b>Attribute
+     *                of</b></font></td>
+     *            <td> <font size="-1">Course schedules</font></td>
+     *          </tr>
+     *          <tr valign="top">
+     *            <td width="120"> <font size="-1"><b>Content
+     *                type</b></font></td>
+     *
+     *            <td> <font size="-1">string</font></td>
+     *
+     *          </tr>
+     *        </tbody></table>
+     * @return ID code associated with a course
+     */
+    public String getCourseNumber();
+
+    /**
+     * Time a class is in session.
+     *
+     *
+     *  <table border="1" cellpadding="5" cellspacing="0" width="640">
+     *          <tbody><tr valign="top">
+     *            <td colspan="2" bgcolor="#dddddd" valign="top"> <font size="-1"><b><a name="course_times"></a>course_times</b></font></td>
+     *
+     *          </tr>
+     *
+     *          <tr valign="top">
+     *            <td width="120"> <font size="-1"><b>Details</b></font></td>
+     *            <td> <font size="-1">Time a class is in session.</font></td>
+     *          </tr>
+     *          <tr valign="top">
+     *            <td width="120"> <font size="-1"><b>Example</b></font></td>
+     *
+     *            <td> <font size="-1">&lt;g:course_times&gt;MWF 08:30 - 09:45&lt;/g:course_times&gt;</font></td>
+     *
+     *          </tr>
+     *          <tr valign="top">
+     *            <td width="120"> <font size="-1"><b>Attribute
+     *                of</b></font></td>
+     *            <td> <font size="-1">Course schedules</font></td>
+     *
+     *          </tr>
+     *          <tr valign="top">
+     *            <td width="120"> <font size="-1"><b>Content
+     *                type</b></font></td>
+     *
+     *            <td> <font size="-1">string</font></td>
+     *          </tr>
+     *        </tbody></table>
+     * @param courseTimes Time a class is in session
+     */
+    public void setCourseTimes(String courseTimes);
+
+    /**
+     * Time a class is in session.
+     *
+     *
+     *
+     *  <table border="1" cellpadding="5" cellspacing="0" width="640">
+     *          <tbody><tr valign="top">
+     *            <td colspan="2" bgcolor="#dddddd" valign="top"> <font size="-1"><b><a name="course_times"></a>course_times</b></font></td>
+     *
+     *          </tr>
+     *
+     *          <tr valign="top">
+     *            <td width="120"> <font size="-1"><b>Details</b></font></td>
+     *            <td> <font size="-1">Time a class is in session.</font></td>
+     *          </tr>
+     *          <tr valign="top">
+     *            <td width="120"> <font size="-1"><b>Example</b></font></td>
+     *
+     *            <td> <font size="-1">&lt;g:course_times&gt;MWF 08:30 - 09:45&lt;/g:course_times&gt;</font></td>
+     *
+     *          </tr>
+     *          <tr valign="top">
+     *            <td width="120"> <font size="-1"><b>Attribute
+     *                of</b></font></td>
+     *            <td> <font size="-1">Course schedules</font></td>
+     *
+     *          </tr>
+     *          <tr valign="top">
+     *            <td width="120"> <font size="-1"><b>Content
+     *                type</b></font></td>
+     *
+     *            <td> <font size="-1">string</font></td>
+     *          </tr>
+     *        </tbody></table>
+     * @return Time a class is in session
+     */
+    public String getCourseTimes();
+
+    /**
+     * Salary for this position.
+     *
+     *
+     *
+     * <table border="1" cellpadding="5" cellspacing="0" width="640">
+     * <tbody><tr valign="top">
+     *  <td colspan="2" bgcolor="#dddddd" valign="top"><font size="-1">
+     *  <b><a name="salary"></a>salary</b></font></td>
+     * </tr>
+     *
+     * <tr valign="top">
+     *
+     *  <td width="120"><font size="-1">
+     *  <b>Details</b></font></td>
+     *  <td><font size="-1">
+     *  Salary for this position. Non-numeric values such as "$" symbols are not acceptable. </font></td>
+     * </tr>
+     * <tr valign="top">
+     *
+     *  <td width="120"><font size="-1">
+     *
+     *  <b>Example</b></font></td>
+     *  <td><font size="-1">
+     * &lt;g:salary&gt;55000&lt;/g:salary&gt;</font></td>
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *
+     *  <b>Attribute of</b></font></td>
+     *
+     *  <td><font size="-1">
+     *  Jobs</font></td>
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *  <b>Content type</b></font></td>
+     *
+     *  <td><font size="-1">
+     *
+     * float</font></td>
+     * </tr>
+     * </tbody></table>
+     * @param salary Salary for this position
+     */
+    public void setSalary(Float salary);
+
+    /**
+     * Salary for this position.
+     *
+     *
+     * <table border="1" cellpadding="5" cellspacing="0" width="640">
+     * <tbody><tr valign="top">
+     *  <td colspan="2" bgcolor="#dddddd" valign="top"><font size="-1">
+     *  <b><a name="salary"></a>salary</b></font></td>
+     * </tr>
+     *
+     * <tr valign="top">
+     *
+     *  <td width="120"><font size="-1">
+     *  <b>Details</b></font></td>
+     *  <td><font size="-1">
+     *  Salary for this position. Non-numeric values such as "$" symbols are not acceptable. </font></td>
+     * </tr>
+     * <tr valign="top">
+     *
+     *  <td width="120"><font size="-1">
+     *
+     *  <b>Example</b></font></td>
+     *  <td><font size="-1">
+     * &lt;g:salary&gt;55000&lt;/g:salary&gt;</font></td>
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *
+     *  <b>Attribute of</b></font></td>
+     *
+     *  <td><font size="-1">
+     *  Jobs</font></td>
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *  <b>Content type</b></font></td>
+     *
+     *  <td><font size="-1">
+     *
+     * float</font></td>
+     * </tr>
+     * </tbody></table>
+     * @return Salary for this position
+     */
+    public Float getSalary();
+
+    /**
+     * Topics of study for a course.
+     *
+     *
+     * <table border="1" cellpadding="5" cellspacing="0" width="640">
+     * <tbody><tr valign="top">
+     *  <td colspan="2" bgcolor="#dddddd" valign="top"><font size="-1">
+     *  <b><a name="subject"></a>subject</b></font></td>
+     * </tr>
+     * <tr valign="top">
+     *
+     *  <td width="120"><font size="-1">
+     *
+     *  <b>Details</b></font></td>
+     *  <td><font size="-1">
+     *  Topic of study for a course.</font></td>
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *  <b>Example</b></font></td>
+     *
+     *  <td><font size="-1"> &lt;g:subject&gt;Trigonometry&lt;/g:subject&gt;</font></td>
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *  <b>Attribute of</b></font></td>
+     *  <td><font size="-1">
+     *
+     *  Course schedules</font></td>
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *  <b>Content type</b></font></td>
+     *  <td><font size="-1">
+     *  string</font></td>
+     *
+     * </tr>
+     * </tbody></table>
+     * @param subject Topics of study for a course
+     */
+    public void setSubjects(String[] subject);
+
+    /**
+     * Topics of study for a course.
+     *
+     *
+     * <table border="1" cellpadding="5" cellspacing="0" width="640">
+     * <tbody><tr valign="top">
+     *  <td colspan="2" bgcolor="#dddddd" valign="top"><font size="-1">
+     *  <b><a name="subject"></a>subject</b></font></td>
+     * </tr>
+     * <tr valign="top">
+     *
+     *  <td width="120"><font size="-1">
+     *
+     *  <b>Details</b></font></td>
+     *  <td><font size="-1">
+     *  Topic of study for a course.</font></td>
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *  <b>Example</b></font></td>
+     *
+     *  <td><font size="-1"> &lt;g:subject&gt;Trigonometry&lt;/g:subject&gt;</font></td>
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *  <b>Attribute of</b></font></td>
+     *  <td><font size="-1">
+     *
+     *  Course schedules</font></td>
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *  <b>Content type</b></font></td>
+     *  <td><font size="-1">
+     *  string</font></td>
+     *
+     * </tr>
+     * </tbody></table>
+     * @return Topics of study for a course
+     */
+    public String[] getSubjects();
+
+    /**
+     * Name of the school at which a class is offered.
+     * <table border="1" cellpadding="5" cellspacing="0" width="640">
+     * <tbody><tr valign="top">
+     *  <td colspan="2" bgcolor="#dddddd" valign="top"><font size="-1">
+     *  <b><a name="university"></a>university</b></font></td>
+     *
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *  <b>Details</b></font></td>
+     *  <td><font size="-1">
+     *  Name of the school a class is offered at. </font></td>
+     * </tr>
+     *
+     * <tr valign="top">
+     *
+     *  <td width="120"><font size="-1">
+     *  <b>Example</b></font></td>
+     *  <td><font size="-1"> &lt;g:university&gt;Stanford&lt;/g:university&gt;</font></td>
+     * </tr>
+     * <tr valign="top">
+     *
+     *  <td width="120"><font size="-1">
+     *
+     *  <b>Attribute of</b></font></td>
+     *  <td><font size="-1">
+     * Course schedules</font></td>
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *  <b>Content type</b></font></td>
+     *
+     *  <td><font size="-1">
+     *
+     *  string</font></td>
+     * </tr>
+     * </tbody></table>
+     * @param university Name of the school at which a class is offered.
+     */
+    public void setUniversity(String university);
+
+    /**
+     * Name of the school at which a class is offered.
+     * <table border="1" cellpadding="5" cellspacing="0" width="640">
+     * <tbody><tr valign="top">
+     *  <td colspan="2" bgcolor="#dddddd" valign="top"><font size="-1">
+     *  <b><a name="university"></a>university</b></font></td>
+     *
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *  <b>Details</b></font></td>
+     *  <td><font size="-1">
+     *  Name of the school a class is offered at. </font></td>
+     * </tr>
+     *
+     * <tr valign="top">
+     *
+     *  <td width="120"><font size="-1">
+     *  <b>Example</b></font></td>
+     *  <td><font size="-1"> &lt;g:university&gt;Stanford&lt;/g:university&gt;</font></td>
+     * </tr>
+     * <tr valign="top">
+     *
+     *  <td width="120"><font size="-1">
+     *
+     *  <b>Attribute of</b></font></td>
+     *  <td><font size="-1">
+     * Course schedules</font></td>
+     * </tr>
+     * <tr valign="top">
+     *  <td width="120"><font size="-1">
+     *  <b>Content type</b></font></td>
+     *
+     *  <td><font size="-1">
+     *
+     *  string</font></td>
+     * </tr>
+     * </tbody></table>
+     * @return Name of the school at which a class is offered.
+     */
+    public String getUniversity();
+}

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/f7a4e00f/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/base/CustomTag.java
----------------------------------------------------------------------
diff --git a/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/base/CustomTag.java b/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/base/CustomTag.java
new file mode 100644
index 0000000..55139c6
--- /dev/null
+++ b/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/base/CustomTag.java
@@ -0,0 +1,125 @@
+/*
+ * CustomTag.java
+ *
+ * Created on February 6, 2006, 12:17 AM
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+package org.rometools.feed.module.base;
+
+
+/**
+ * This class represents a custom tag name and value.
+ * @author <a href="mailto:cooper@screaming-penguin.com">Robert "kebernet" Cooper</a>
+ * @version $Revision: 1.2 $
+ */
+public interface CustomTag  {
+    
+    /**
+     * Returns the tag name used.
+     * @return Returns the tag name used.
+     */
+    public String getName();
+    
+    /**
+     * The value of the custom tag.
+     * <br>
+     * <br>
+     * <table border="1" cellpadding="6" cellspacing="0">
+     *  <tbody><tr valign="top">
+     *    <td><strong><font size="-1">Type (JavaType)</font></strong></td>
+     * 
+     *    <td><strong><font size="-1">Description</font></strong></td>
+     *    <td><strong><font size="-1">Examples</font></strong></td>
+     *  </tr>
+     *  <tr valign="top">
+     *    <td><font size="-1">string (String)</font></td>
+     *    <td><font size="-1">Any string</font></td>
+     *    <td><font size="-1">Blue</font></td>
+     * 
+     *  </tr>
+     *  <tr valign="top">
+     *    <td><font size="-1">int (Integer)</font></td>
+     *    <td><font size="-1">Whole number values</font></td>
+     *    <td><font size="-1">1000</font></td>
+     *  </tr>
+     *  <tr valign="top">
+     * 
+     *    <td><font size="-1">float (Float)</font></td>
+     *    <td><font size="-1">Numbers with decimal digits</font></td>
+     *    <td><font size="-1">3.5</font></td>
+     *  </tr>
+     *  <tr valign="top">
+     *    <td><font size="-1">intUnit (IntUnit)</font></td>
+     * 
+     *    <td><font size="-1">Whole number value and a string</font></td>
+     * 
+     *    <td><font size="-1">10 km</font></td>
+     *  </tr>
+     *  <tr valign="top">
+     *    <td><font size="-1">floatUnit (FloatUnit)</font></td>
+     *    <td><font size="-1">Numbers with decimal digits and a string</font></td>
+     * 
+     *    <td><font size="-1">1.5 km</font></td>
+     *  </tr>
+     * 
+     * <tr valign="top">
+     *    <td><font size="-1">date (ShortDate)</font></td>
+     *    <td><font size="-1">Date of an event, in format YYYY-MM-DD</font></td>
+     *    <td><font size="-1">2005-12-12</font></td>
+     *  </tr>
+     * 
+     *  <tr valign="top">
+     *    <td><font size="-1">dateTime (java.util.Date)</font></td>
+     * 
+     *    <td><font size="-1">Date and time for an event, in format YYYY-MM-DDThh:mm:ss</font></td>
+     *    <td><font size="-1">2005-12-12T12:00:00 </font></td>
+     *  </tr>
+     *  <tr valign="top">
+     *    <td><font size="-1">dateTimeRange (DateTimeRange)</font></td>
+     * 
+     *    <td><font size="-1">Start and end dates for an event. An attribute of this type will contain two sub-attributes, &lt;start&gt; and &lt;end&gt; in format YYYY-MM-DD</font></td>
+     * 
+     *    <td><font size="-1">&lt;start&gt;1975-09-25&lt;/start&gt;<br>&lt;end&gt;1975-09-25&lt;/end&gt;
+     * 
+     * </font></td>
+     *  </tr>
+     *  <tr valign="top">
+     *    <td><font size="-1">url (java.net.URL)</font></td>
+     *    <td><font size="-1">HTTP URL </font></td>
+     * 
+     *    <td><font size="-1">http://www.google.com</font></td>
+     *  </tr>
+     * 
+     *  <tr valign="top">
+     *    <td><font size="-1">boolean (Boolean)</font></td>
+     *    <td><font size="-1">Value may be either true or false.</font></td>
+     *    <td><font size="-1">true</font></td>
+     *  </tr>
+     * 
+     *  <tr valign="top">
+     *    <td><font size="-1">location (CustomTagImpl.Location)</font></td>
+     * 
+     *    <td><font size="-1">Location</font></td>
+     *    <td><font size="-1">921 W. Dana Street, Mtn View, CA-94103 </font></td>
+     *  </tr>
+     * 
+     * </tbody></table>
+     * @return The value of the tag. The objects class is determined by the "type" attribute on the tag.
+     */
+    public Object getValue();
+    
+}

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/f7a4e00f/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/base/CustomTagImpl.java
----------------------------------------------------------------------
diff --git a/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/base/CustomTagImpl.java b/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/base/CustomTagImpl.java
new file mode 100644
index 0000000..8438d8d
--- /dev/null
+++ b/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/base/CustomTagImpl.java
@@ -0,0 +1,215 @@
+/*
+ * CustomTagImpl.java
+ *
+ * Created on February 6, 2006, 12:06 AM
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+package org.rometools.feed.module.base;
+
+import org.rometools.feed.module.base.types.DateTimeRange;
+import org.rometools.feed.module.base.types.FloatUnit;
+import org.rometools.feed.module.base.types.IntUnit;
+import org.rometools.feed.module.base.types.ShortDate;
+
+import java.net.URL;
+
+import java.util.Date;
+
+
+/**
+ * @version $Revision: 1.1 $
+ * @author <a href="mailto:cooper@screaming-penguin.com">Robert "kebernet" Cooper</a>
+ */
+public class CustomTagImpl implements CustomTag {
+    private Object value;
+    private String name;
+
+    /** Creates a new instance of CustomTagImpl */
+    public CustomTagImpl(String name,String value) {
+	if( name == null || value == null ){ throw new NullPointerException("Name and Value cannont be null."); } 
+        this.name = name;
+        this.value = value;
+    }
+
+    public CustomTagImpl(String name,Integer value) {
+	if( name == null || value == null ){ throw new NullPointerException("Name and Value cannont be null."); }
+        this.name = name;
+        this.value = value;
+    }
+
+    public CustomTagImpl(String name,Float value) {
+	if( name == null || value == null ){ throw new NullPointerException("Name and Value cannont be null."); }
+        this.name = name;
+        this.value = value;
+    }
+
+    public CustomTagImpl(String name,IntUnit value) {
+	if( name == null || value == null ){ throw new NullPointerException("Name and Value cannont be null."); }
+        this.name = name;
+        this.value = value;
+    }
+
+    public CustomTagImpl(String name,FloatUnit value) {
+	if( name == null || value == null ){ throw new NullPointerException("Name and Value cannont be null."); }
+        this.name = name;
+        this.value = value;
+    }
+
+    public CustomTagImpl(String name,ShortDate value) {
+	if( name == null || value == null ){ throw new NullPointerException("Name and Value cannont be null."); }
+        this.name = name;
+        this.value = value;
+    }
+
+    public CustomTagImpl(String name,Date value) {
+	if( name == null || value == null ){ throw new NullPointerException("Name and Value cannont be null."); }
+        this.name = name;
+        this.value = value;
+    }
+
+    public CustomTagImpl(String name,DateTimeRange value) {
+	if( name == null || value == null ){ throw new NullPointerException("Name and Value cannont be null."); }
+        this.name = name;
+        this.value = value;
+    }
+
+    public CustomTagImpl(String name,URL value) {
+	if( name == null || value == null ){ throw new NullPointerException("Name and Value cannont be null."); }
+        this.name = name;
+        this.value = value;
+    }
+
+    public CustomTagImpl(String name,Boolean value) {
+	if( name == null || value == null ){ throw new NullPointerException("Name and Value cannont be null."); }
+        this.name = name;
+        this.value = value;
+    }
+
+    public CustomTagImpl(String name,Location value) {
+	if( name == null || value == null ){ throw new NullPointerException("Name and Value cannont be null."); }
+        this.name = name;
+        this.value = value;
+    }
+
+    public String getName() {
+        return this.name;
+    }
+
+    public Object getValue() {
+        return this.value;
+    }
+
+    public boolean equals( Object o ){
+	if( o instanceof CustomTag ){
+	    CustomTag tag = (CustomTag) o;
+	    if( this.name.equals( tag.getName() ) && this.value.equals( tag.getValue() ))
+		return true;
+	}
+	return false;
+    }
+    
+    /**
+     * Creates and returns a copy of this object.  The precise meaning 
+     * of "copy" may depend on the class of the object. The general 
+     * intent is that, for any object <tt>x</tt>, the expression:
+     * <blockquote>
+     * <pre>
+     * x.clone() != x</pre></blockquote>
+     * will be true, and that the expression:
+     * <blockquote>
+     * <pre>
+     * x.clone().getClass() == x.getClass()</pre></blockquote>
+     * will be <tt>true</tt>, but these are not absolute requirements. 
+     * While it is typically the case that:
+     * <blockquote>
+     * <pre>
+     * x.clone().equals(x)</pre></blockquote>
+     * will be <tt>true</tt>, this is not an absolute requirement. 
+     * <p>
+     * By convention, the returned object should be obtained by calling
+     * <tt>super.clone</tt>.  If a class and all of its superclasses (except
+     * <tt>Object</tt>) obey this convention, it will be the case that
+     * <tt>x.clone().getClass() == x.getClass()</tt>.
+     * <p>
+     * By convention, the object returned by this method should be independent
+     * of this object (which is being cloned).  To achieve this independence,
+     * it may be necessary to modify one or more fields of the object returned
+     * by <tt>super.clone</tt> before returning it.  Typically, this means
+     * copying any mutable objects that comprise the internal "deep structure"
+     * of the object being cloned and replacing the references to these
+     * objects with references to the copies.  If a class contains only
+     * primitive fields or references to immutable objects, then it is usually
+     * the case that no fields in the object returned by <tt>super.clone</tt>
+     * need to be modified.
+     * <p>
+     * The method <tt>clone</tt> for class <tt>Object</tt> performs a 
+     * specific cloning operation. First, if the class of this object does 
+     * not implement the interface <tt>Cloneable</tt>, then a 
+     * <tt>CloneNotSupportedException</tt> is thrown. Note that all arrays 
+     * are considered to implement the interface <tt>Cloneable</tt>. 
+     * Otherwise, this method creates a new instance of the class of this 
+     * object and initializes all its fields with exactly the contents of 
+     * the corresponding fields of this object, as if by assignment; the
+     * contents of the fields are not themselves cloned. Thus, this method 
+     * performs a "shallow copy" of this object, not a "deep copy" operation.
+     * <p>
+     * The class <tt>Object</tt> does not itself implement the interface 
+     * <tt>Cloneable</tt>, so calling the <tt>clone</tt> method on an object 
+     * whose class is <tt>Object</tt> will result in throwing an
+     * exception at run time.
+     * 
+     * @return     a clone of this instance.
+     * @exception  CloneNotSupportedException  if the object's class does not
+     *               support the <code>Cloneable</code> interface. Subclasses
+     *               that override the <code>clone</code> method can also
+     *               throw this exception to indicate that an instance cannot
+     *               be cloned.
+     * @see java.lang.Cloneable
+     */
+    public Object clone() throws CloneNotSupportedException {
+        CustomTagImpl cti = new CustomTagImpl( this.name, "" );
+	cti.value = this.value;
+	return cti;	
+    }
+
+    public String toString() {
+	return "[custom name=\""+this.name+"\" value=\""+this.value.toString()+"\"]";
+    }
+    public static class Location {
+        private String value;
+
+        public Location(String value) {
+            this.value = value;
+        }
+
+        public String getValue() {
+            return value;
+        }
+
+        public Object clone() {
+            return new Location(this.value);
+        }
+
+        public String toString() {
+            return value;
+        }
+	
+	public boolean equals( Object o ){
+	    if( o instanceof Location && ((Location) o).value.equals(this.value) ) return true;
+	    else return false;
+	}
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/f7a4e00f/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/base/CustomTags.java
----------------------------------------------------------------------
diff --git a/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/base/CustomTags.java b/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/base/CustomTags.java
new file mode 100644
index 0000000..00bdb75
--- /dev/null
+++ b/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/base/CustomTags.java
@@ -0,0 +1,38 @@
+/*
+ * CustomTags.java
+ *
+ * Created on February 6, 2006, 12:26 AM
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+package org.rometools.feed.module.base;
+
+import com.sun.syndication.feed.module.Module;
+import java.util.List;
+
+/**
+ * @version $Revision: 1.1 $
+ * @author <a href="mailto:cooper@screaming-penguin.com">Robert "kebernet" Cooper</a>
+ */
+public interface CustomTags extends Module {
+    
+    public static final String URI = "http://base.google.com/cns/1.0";
+    
+    public List getValues();
+    
+    public void setValues(List values);
+    
+}

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/f7a4e00f/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/base/CustomTagsImpl.java
----------------------------------------------------------------------
diff --git a/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/base/CustomTagsImpl.java b/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/base/CustomTagsImpl.java
new file mode 100644
index 0000000..40263e7
--- /dev/null
+++ b/commons/sesame-tools-rio-rss/src/ext/java/org/rometools/feed/module/base/CustomTagsImpl.java
@@ -0,0 +1,68 @@
+/*
+ * CustomTagsImpl.java
+ *
+ * Created on February 6, 2006, 12:26 AM
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+package org.rometools.feed.module.base;
+
+import com.sun.syndication.feed.CopyFrom;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @version $Revision: 1.1 $
+ * @author <a href="mailto:cooper@screaming-penguin.com">Robert "kebernet" Cooper</a>
+ */
+public class CustomTagsImpl implements CustomTags {
+    
+    private List values;
+    /** Creates a new instance of CustomTagsImpl */
+    public CustomTagsImpl() {
+    }
+    
+    public List getValues(){
+	values = (values == null )? new ArrayList() : values;
+	return values;
+    }
+    
+    public void setValues(List values){
+	this.values = values;
+    }
+    
+    public void copyFrom(CopyFrom object) {
+	CustomTags ct = (CustomTags) object;
+	this.values = new ArrayList( ct.getValues() );
+    }
+    
+    @Override
+    public Object clone() {
+	CustomTagsImpl cti = new CustomTagsImpl();
+	cti.values = new ArrayList( this.values );
+	return cti;
+    }
+    
+    public Class getInterface(){
+	return CustomTags.class;
+    }
+
+    public String getUri() {
+	return CustomTags.URI;
+    }
+
+    
+}