From OWL to Plone

I found a working path to transform an OWL ontology into a working Plone content-type. Here is my recipe :

  1. Choose any existing OWL ontology
  2. With Protege equipped with its OWL plugin, create a new project from your OWL file.
  3. Still within Protege, with the help of its UML plugin, convert your OWL-Protege project into a UML classes project. You get an XMI file.
  4. Load this XMI file into an UML project with Poseidon. Save this project under the .zuml Poseidon format.
  5. From poseidon, export your classes a new xmi file. It will be Plone-friendly.
  6. With a text editor, delete some accentuated characters that Poseidon might have added to your file (for example, the Frenchy Poseidon adds a badly accentuated « Modele sans titre » attribute into your XMI) because the next step won’t appreciate them
  7. python Archgenxml.py -o YourProduct yourprojectfile.xmi turns your XMI file into a valid Plone product. Requires Plone and Archetypes (see doc) latest stable version plus ArchgenXML head from the subversion repository.
  8. Launch your Plone instance and install YourProduct as a new product from your Plone control panel. Enjoy YourProduct !
  9. eventually populate it with an appropriate marshaller.

Now you are not far from using Plone as a semantic aggregator.

19 réflexions au sujet de « From OWL to Plone »

  1. Ping : owl-ontology

  2. Alexis Liarokapis

    I tried your procedure, but I have many parser errors.

    Can I obtain a working example (owl and xmi file) and the version of each used software ?

  3. Sig Auteur de l’article

    I use :
    – Protege version 3.1 beta (build 176) with its OWL plugin and its UML backend plugin
    – Poseidon Community Edition version 3.0
    – Zope v.2.7.5
    – Plone v.2.0.5
    – Archetypes v.1.3.2-final
    – Latest ArchgenXML and Marshall from SVN (currently revision 4256)

    Before I send you some files, could you please indicate at which step in this procedure you get parser errors ? Which piece of software issues these errors ?

  4. Ping : AkaSig » Blog Archive » Daisy vs. Plone, feature fighting

  5. Ping : AkaSig » Blog Archive » Comparator

  6. tester

    When i install a product, what am i expecting to see? I installed the product i took from file SimpleSample.xmi (C:\Program Files\Protege_3.2.1\ArchGenXML\samples).. What should i see in this case? Thanks!

  7. chrysostomos

    We are working on a project for the University of Thessaly (Greece). Does anyone have an idea of how to implement the ontology of Plone? Does anybody know if it is already implemented?

  8. Sig Auteur de l’article

    tester,

    Once you have archgenxml and an .xmi file, you are supposed to do a python Archgenxml.py -o YourProduct yourprojectfile.xmi as a result of which you obtain a working Plone product called YourProduct. When you install YourProduct and restart Plone, you should now be able to add instances of the content types declared in YourProduct into Plone folders. If this is not the case, check in ZMI/Control Panel/Products that YourProduct is detected by Zope and not broken. Then check in your Plone instance/site setup/Add-remove products that YourProduct has been installed. Then if you still can’t see any new content type in the « add to folder » menus of your home Plone folder, then maybe YourProduct does not declare content types properly. Check in the ZMI/Plone instance/portal_types tool that new types have been added. If this is not the case, then ask for support to the plone-users mailing list.

    Chrysostomos, what do you call « the ontology of Plone »? What is such a thing? I know of PloneOntology being an additional Plone product but I have not tested it any further than installing it and playing with it very briefly. There are various Plone products referring to ontologies but I don’t know exactly what you want to do. Please clarify your request.

  9. Cecelia Hickel

    Greetings,

    I am wondering if you have used more current versions of Protege, Plone, Archetypes, ArchgenXML and Marshall following this same procedure? Has there been improvements or changes? I am very much interested in pursuing this process further. I find your thoughts and ideas a kindred spirit of my own.

    I have a connection to the Protege development group and to an ontology group/forum. Does this interest you?

  10. Sig Auteur de l’article

    Thanks for your comment Cecelia.

    I have not retried this procedure recently. I am once again working with latest versions of Plone, Archetypes and ArchGenXML for another project but I have no current need for doing the OWL-to-Plone transformation once again (Im starting with an UML model, not an ontology). Id be very much interested in knowing the results of your experiments if you try the whole procedure with recent versions of Protege (or other).

    The most notable changes I can imagine are about Poseidon (the UML modeller). You should try using ArgoUML instead of Poseidon. Poseidon is a commercial product for which there no longer is a free version easily triable. <a href= »http://argouml.tigris.org/ » rel= »nofollow »>ArgoUML</a> (open source) should do the trick unless it chokes on Protege’s XMI format. You’ll tell me. :)

    The Plone stack has kept on maturing so you may enjoy additional features on this side. There is a Plone extension product that may serve as a basis for automating this procedure: <a href= »http://plone.org/products/feedfeeder » rel= »nofollow »>feedfeeder</a>. Currently feedfeeder creates live Plone content from <a href= »http://en.wikipedia.org/wiki/Atom_%28standard%29″ rel= »nofollow »>Atom</a> feeds (it instantiates articles from their Atom description). But allowing feedfeeder to have ArchGenXML processing XMI feeds might be doable. <a href= »http://vanrees.org/ » rel= »nofollow »>Reinout Van Rees</a> might be interested in providing some support for this.

    Note also that <a href= »http://vanrees.org/weblog/topics/archgenxml » rel= »nofollow »>a successor to ArchGenXML is being worked on as part of a Google Summer Of Code project. This successor is called Genesis</a>. The guy working on Genesis may release something in September or so. He seems to have some good expertise in the field of code generation so he may be of good advice for your work.

    Whatever issue you encounter in your experiment please keep me and readers informed by posting comments here ! :)

  11. myriam

    je veux créer un type de contenu owl dans zope ,j’ai trouvé votre solution mais je trouve que les étapes sont pas claires,

  12. Sig Auteur de l’article

    Myriam,

    La méthode décrite dans cet article s’adresse à des informaticiens chevronnés, qui sont non seulement habitués aux environnements de modélisation objet tels que Protégé et Poséidon (ou ArgoUML) mais également à la plate-forme technologique Plone. Notez qu’il s’agit ici de transformer une ontologie en modèle d’objet pour un produit d’extension de Plone (sur Zope), pas pour Zope tout seul.

    De manière à manipuler des ontologies dans Plone plus simplement, il existe aujourd’hui des produits d’extensions tels que Plone Ontology ou, pour des besoins plus spécialisés, icSemantic.

    Bonne chance.

  13. sarah

    merci,

    je veux créer un type de contenu,qui permet au plone/zope d’accepter un

    format owl (rdf/rdfs/xml)

  14. sarah

    je m’excuse pour le message incomplet….

    je travaille sur plone et zope, je veux créer un type de contenu (owl),

    pour pouvoir exploiter une ontologie en utilisant le langage de description

    d’ontologie(owl),j’ai utilisé Z class,mais je suis pas satisfaite…

    parce que j’ai utilisé seulement la classe de base Zcatalog:CatalogAware

    je sais pas qu’elles sont les propriétés que je doive ajouter …

    q2:si je veux utiliser les Archetypes qu ‘elles sont les étapes que je doive

    pour arriver à creer mon type de contenu « owl »(rdf/rdfs/xml)

  15. sarah

    je m’excuse pour le message incomplet….

    je travaille sur plone et zope, je veux créer un type de contenu (owl),

    pour pouvoir exploiter une ontologie en utilisant le langage de description

    d’ontologie(owl),j’ai utilisé Z class,mais je suis pas satisfaite…

    parce que j’ai utilisé seulement la classe de base Zcatalog:CatalogAware

    je sais pas qu’elles sont les propriétés que je doive ajouter …

    q2:si je veux utiliser les Archetypes qu ‘elles sont les étapes que je doive

    pour arriver à creer mon type de contenu “owl”(rdf/rdfs/xml)

  16. Sig

    A ma connaissance, les ZClass sont une voie sans issue pour ce genre de développement. Personnellement, je n’ai jamais travaillé avec.
    Le mieux, aujourd’hui, est effectivement de s’appuyer sur Archetypes ou, si on se sent une âme d’aventurier(e), de regarder du côté de dexterity (http://code.google.com/p/dexterity/) qui est le futur remplaçant d’Archetypes.

    Avec Archetypes, le plus simple est d’essayer l’outil Archgenxml qui permet de transformer un modèle d’objet UML en type de contenu. Là, vous avez 2 possibilités :

    1/ soit vous créer un modèle qui décrit ce qu’est une ontologie et non pas ce qu’elle contient => qui est l’auteur de l’ontologie, ce à quoi elle sert, les URL des ontologies avec lesquelles elle est liée

    2/ soit vous essayer de représenter en UML le contenu d’une ontologie

    Dans le premier cas, c’est plutôt simple et, au final, votre ontologie sérialisée en XML sera disponible sous la forme d’une vue ou d’un fichier joint à un élément de contenu de type « Ontology » (un seul type de contenu, qui contient une ontologie mais ignore à peu près tout des classes décrites dans cette ontologie, considérée comme un simple document, un peu amélioré). C’est l’approche du produit Plone Ontology. Et d’ailleurs, il tout à fait possible que ce produit réponde déjà à vos attentes.

    Dans le second cas, il vous faudra mettre au point une mécanique pour transformer votre ontologie en modèle UML (à l’aide de Protégé par exemple) puis pour automatiser, à l’aide d’Archgenxml, la création d’un type de contenu nouveau pour chaque classe présente dans votre ontologie puis pour automatiser, à l’aide de buildout, l’installation de ces nouveaux types de contenu dans une instance Plone. C’est l’approche présentée dans l’article plus haut. Dans ce cas, vous aboutissez avec autant de types de contenu Plone qu’il y a de classes dans votre ontologie. C’est plus ambitieux mais plus « à la pointe de la recherche ».

  17. delia

    salut,

    je suis débutante en zope et plone, j’ai essayé d’installer des produits

    zope comme »RichDocument,ArchExample,PloneOntology….. »,

    mais j’ai pas réussi,concernant RichDocument il s’affiche dans la liste des

    produit après installation mais lorsque je tente d’ouvrir

    le document(un document RichDocument) aprés de le créer en le donnant

    un id,une erreur s’affiche:

    je comprend pas pourquoi:

    *est_ce_que je dois ajouter une variable d’environnement (mon systeme est windows xp)..
    *ou le probleme dans le produit ie il n’est pas fiable….!!!!!!!!???????

    consernant PloneOntology ne s’affiche de tout dans la liste de produit pour
    l’installer.

    pour ArchExample ,je trouve pas un site pour télécharger le produit

    complet c’est pour ça je pense que j’ai pas arrivé à l’installer ,vous

    pouvez me proposer un lien pour le télécharger ……….!!!!!?????????

    moi,j’utilise add_on products pour installer les produits,mais j’ai trouvé

    d’autres méthodes qui utilisent zc.buildout ,eggs et easy_install,

    mais j’ai rien compris…

    j’ai besoin de votre aide …

    merci d’avance….

  18. delia

    delia,
    dans le même contexte de mon premier message,
    j’ai essayé de créer un type de contenu en suivant les mêmes étapes que celles qui sont dans le document (http://librapport.org/getpdf.php?iddocument=255),mais le produit GouZProduct s’affiche cassé dans le panneau de configuration et lorsque je clique sur le produit le message suivant s’affiche:
    Traceback (most recent call last):
    File « C:\Program Files\Plone 2\Zope\lib\python\OFS\Application.py », line 654, in import_product
    product=__import__(pname, global_dict, global_dict, silly)
    File « C:\Program Files\Plone 2\Data\Products\GouZProduct\__init__.py », line 7, in ?
    from config import SKINS_DIR, GLOBALS, PROJECTNAME
    File « C:\Program Files\Plone 2\Data\Products\GouZProduct\config.py », line 1
    from Permissions import *
    ^
    SyntaxError: invalid syntax

    je comprend pas où est le problème exactement ….!!!!!?????,svp …j’ai besoin de votre aide parce que je suis entraine de préparer mon pfe et je suis en retard……..merci d’avance…

  19. Sig Auteur de l’article

    Delia,

    Désolé de la lenteur de mes réponses, mais je n’ai pas beaucoup de temps à consacrer au soutien informatique de mes lecteurs. Je ne sais pas pourquoi vous n’arrivez pas à installer les produits Plone que vous indiquez, peut-être ne sont-ils pas compatibles avec la version de Plone que vous utilisez (version 3.0 sans doute).

    Le mieux serait que vous alliez demander de l’aide sur les listes de discussion de la communauté Plone. Il y a même une liste francophone avec des gens plus disponibles et plus sympa que moi. :)

    Voici l’adresse :

    http://www.pilotsystems.net/actus/ouverture-de-la-liste-plone-fr/

    Bonne chance pour votre projet de fin d’études.

Les commentaires sont fermés.