Latest Posts

Archives [+]

Archive for 'April 2010'

    Posted by Michael Duerig APR 30, 2010

    Posted in conferences, open source, scala and sling Add comment

    The first Scala Days at EPFL Lausanne where a great success. The conference was fully booked up to the maximum capacity of the venue. There where two session tracks in parallel covering a great variety of different topics like DSLs, actor based concurrency and new features in the upcoming 2.8 release to name a few.

    Myself I had the great opportunity to present Apache Sling's Scala scripting engine (video of the presentation).

    More information and support material is available from my Scala for scripting page. Other Scala presentations are available as video as well.

    Posted by Michael Marth APR 20, 2010

    Posted in jcr, link of the day and sling Add comment

    Two good reads for today:

    1. Joe Oettinger (previously editor of TheServerSide) has posted a Java-centric evaluation of persistence options. He covers JDBC, ORMs, JCR, Object DBs and JavaSpaces and looks at features like transactions or queries.

    2. In Apache Sling it is straight forward to render a node in an alternative format like, say, RSS. Chris Pilsworth has come up with an interesting application of this: a Sling bundle that renders Sling URLs as QR codes. I imagine some CQ5 users might find this useful.

    Posted by Michael Marth APR 08, 2010

    Posted in cmis, jackrabbit, jcr, jsr-170 and jsr-283 Add comment

    The capability to expose a Java content repository through CMIS has been around for a while (see for example Day's announcement of a publicly available CMIS server). On the other hand, Apache Jackrabbit developer Michael Duerig has committed some code to the Jackrabbit sandbox that makes available a CMIS repository through JCR. Essentially, this allows you to connect to a CMIS repository and browse it with the JSR-170/283 API.

    Being in the sandbox, this is for the adventurous to try by themselves. But if you want to: check out https://svn.apache.org/repos/asf/jackrabbit/sandbox/jackrabbit-spi2cmis/. You will need to have Apache Chemistry and Apache Jackrabbit installed (i.e. available in the local mvn repository) in order to build. Michael has put together some instructions in a README.

    To understand how to use the code have a look at the test cases. In particular, in AbstractTestCase.java there are test setups for the public CMIS repositories of Day, Alfresco and Nuxeo.

    Posted by Michael Duerig APR 06, 2010

    Posted in announcements and sling Add comment

    I'll be talking at Scala Days 2010 in Lausanne on April 15th about the Scala scripting engine for Sling. While my talk at Jazoon 09 was mainly about using Scala from Sling, this session will be more focused on internals of the Scala scripting engine.
        
    Unfortunately the conference is sold out already. Watch my Scala for scripting page for the session slides and other upcoming support material.

    Posted by Bertrand Delacretaz APR 01, 2010

    Posted in fise, iks-project and rest Add comment

    I'm happy to report that the first IKS FISE (pronounced like an aussie would say "phase") Hackathon, held in Furtwangen earlier this week, has been a success.

    We have implemented a very simple "content enhancement server" to which you PUT or POST content using HTTP requests. The server uses a series of "enhancement engines", plug-ins that can enhance the content with automatically generated tags, entities based on natural language recognition, etc.

    All in a very simple way for now, but the important thing is that we have demonstrated our vision of a very simple RESTful engine for semantic enhancement of content, in the form of working prototype software. The services API is extremely simple, and building the system as OSGi services makes it very easy to plug-in new enhancement engines.

    To whet your appetite, here's a quick walkthrough.

    Starting the FISE server is the hardest part for now, it's all source code that you need to build yourself, including snapshots so don't try it unless you're very familiar with building bleeding edge java software.

    Once that's done, however, using FISE is very simple. To add content to it, use an HTTP PUT request like

    $ curl -H Content-Type:text/plain -T data/text-examples/obama-signing.txt http://localhost:8181/fise/obama

    which, if all goes well, returns a status code 200 and the ID of the FISE content that was stored (/obama in this case).

    Then, make a GET request on the same URL to get the metadata of that piece of content, generated by the currently active FISE EnhancementEngines:

    $ curl http://localhost:8181/fise/obama
    **ContentItem:/obama
    **Metadata:
    </obama>
    <http://rdfs.org/sioc/ns#related_to>
    <http://dbpedia.org/resource/Texas_Health_Resources>

    </obama>
    <http://rdfs.org/sioc/ns#related_to>
    <http://dbpedia.org/resource/Richard_Gottfried>
    ....more RDF triplets

    The FISE architecture allows for each engine to suggest running its content enhancement operations in asynchronous mode, which can be very helpful for analyzing large items.

    So, from the CMS developer point of view, integrating FISE is very simple. Queries are handled in the same way, using HTTP GET requests. The current prototype runs either in standalone mode (in-memory storage, no queries) or on top of Apache Clerezza which provides persistence and SPARQL queries.

    On the other side of things, supplying new enhancement engines or wrapping existing ones to make them available in FISE is also very simple - one just needs to implement the following interface (shown in simplified form here, constant declarations removed for brevity):

    public interface EnhancementEngine {
    /** Can this engine enhance supplied content item? */
    int canEnhance(ContentItem ci);

    /** Enhance supplied item's metadata */
    void computeEnhancements(ContentItem ci);
    }

    To create a new engine, one just needs to create an OSGi service that implements this interface, and register it with the FISE runtime.

    FISE is in my opinion a very exciting development for the IKS project, fulfilling our hopes of creating an interface between CMS developers, who can use FISE easily from the HTTP side, and semantic researchers, who can provide new EnhancementEngines.

    This week's hackathon has more than met the goals set in my presentation at the last IKS workshop in Rome - looking forward to where FISE will lead us!

    More info at http://wiki.iks-project.eu/index.php/FISE

    Posted by Michael Marth APR 01, 2010

    Posted in link of the day, sling and tutorial Add comment

    Apache Sling implements the concept of a "resource". In many cases the actual implementation of the resource is a JCR node. However, Sling can be extended with other implementations of the ResourceProvider interface. With such an extension Sling will map a URL not to a JCR node, but something else.

    In this context Lucas Masini has published a step-by-step tutorial on how to expose rows of relational databases as (read-only) resources within Sling.

    Lucas also mentions that there are a number of possibilities to integrate relational databases with Sling. If you want to learn more about this topic check out this great thread on the CQ list.