Repository - Administration et exploitation

Définition de nouveaux sets

Objectif :

  • On veut ajouter des nouveaux sets OAI afin de proposer aux moissonneurs des ensembles de fiches selon un critère précis.
  • Dans cet exemple, on veut utiliser la métadonnées dc:publisher du format Dublin Core, et en fonction de sa valeur, dire si telle fiche appartient ou non à tel set.

Les sets du module repository sont construits d'après un vocabulaire au format VDEX géré par le module vocabulary. Ce vocabulaire contient les valeurs de référence qui seront comparées à la valeur enregistrée dans la fiche pour une métadonnée ciblée. Cette valeur saisie dans la fiche est définie par une expression XPATH.

Etape 1 : module vocabulary

Il faudra éventuellement ajouter un vocabulaire dans le répertoire [PATH_CUSTOM_CONFIG]/ori-oai-vocabulary/config/properties/static-vocabularies/override/ du module vocabulary. Par exemple my-univ-sets.xml.

Ce sera notamment le cas si les vocabulaires par défaut ne conviennent pas :

  • besoin propre dans tel(s) module(s) ;
  • restriction de la liste de valeurs d'un vocabulaire existant par défaut ;
  • personnalisation des noms (labels) des sets.

Voici un exemple avec deux sets :

<?xml version="1.0" encoding="utf-8"?>
<vdex:vdex xmlns:vdex="http://www.imsglobal.org/xsd/imsvdex_v1p0"
xmlns:orioai="http://www.ori-oai.org/static/xsd/orioaivocab"
xmlns:xforms="http://www.w3.org/2002/xforms"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.imsglobal.org/xsd/imsvdex_v1p0 http://www.imsglobal.org/xsd/imsvdex_v1p0.xsd"
profileType="flatTokenTerms">
<vdex:vocabName>
<vdex:langstring language="fr">my-univ-sets</vdex:langstring>
</vdex:vocabName>
<vdex:vocabIdentifier isRegistered="false">my-univ-sets</vdex:vocabIdentifier>

<vdex:term validIndex="true">
<vdex:termIdentifier>Set1</vdex:termIdentifier>
<vdex:caption>
<vdex:langstring language="fr">[Label pour Set1]</vdex:langstring>
</vdex:caption>
</vdex:term>

<vdex:term validIndex="true">
<vdex:termIdentifier>Set2</vdex:termIdentifier>
<vdex:caption>
<vdex:langstring language="fr">[Label pour Set2]</vdex:langstring>
</vdex:caption>
</vdex:term>

</vdex:vdex>
Etape 2 : module repository

Ensuite, il faut déclarer dans le fichier [PATH_CUSTOM_CONFIG]/ori-oai-repository/config/properties/repository-sets-custom.xml du module repository, un bean de class OaiSetInfos "mySets" référençant le vocabulaire défini plus haut en correspondance avec l'expression XPATH de l'attribut valueXpath :

<bean id="mySets"
class="org.orioai.repository.domain.model.set.OaiSetInfos"
init-method="init">
        <property name="vocabularyId" value="my-univ-sets"/>
        <property name="rootTag" value="vdex"/>
        <property name="termXpath" value="//vdex:term"/>
        <property name="valueXpath" value=".//vdex:termIdentifier"/>
        <property name="setSpecXpath" value="vdex:termIdentifier"/>
        <property name="setNameXpath"
value="vdex:caption/vdex:langstring[@language = 'fr']"/>
        <property name="vocabularyNameXpath"
value="//vdex:vocabName/vdex:langstring[@language = 'fr']"/>
        <property name="vocabularyNameDefault" value="my-univ-sets"/>

        <property name="sources">
            <map>
                <entry>
                    <key>

<value>http://www.openarchives.org/OAI/2.0/oai_dc/</value>
                    </key>
                    <bean
class="org.orioai.repository.domain.model.set.OaiSetSourceInfos">
                        <property name="xpath">
                            <list>
                                <value>//dc:publisher</value>
                            </list>
                        </property>
                        <property name="luceneFieldName">
                            <list>
                                <value>dc.publisher</value>
                            </list>
                        </property>
                    </bean>

                </entry>
            </map>
        </property>
    </bean>

Enfin, il faut déclarer ce bean dans la liste du bean setManager (toujours dans le fichier [PATH_CUSTOM_CONFIG]/ori-oai-repository/config/properties/repository-sets-custom.xml) :

<property name="setInfosList">
<list>
...
...
<ref bean="mySets"/>
</list>
</property>
Etape 3 : module indexing

Si ce n'est pas déjà la cas, il faut indiquer au moteur d'indexation que la métadonnée doit être indexée, pour que sa valeur puisse être comparée aux valeurs du vocabulaire de référence.

Pour cela, il faut ajouter le XPATH de la métadonnée dans la section du format correspondant (dans l'exemple //dc:publisher) dans le fichier [PATH_CUSTOM_CONFIG]/ori-oai-indexing/config/properties/fieldsConfig.xml du module indexing :

<!-- DC -->
<xmlFile ns="http://purl.org/dc/elements/1.1/" prefix="dc" boost="1.0">
    ...
    <field name="dc.publisher" xpathSelect="//dc:publisher"/>
    ...
</xmlFile>

Ensuite, ce champ doit être déclaré dans le schema de SOLR pour qu'il puisse être indexé et recherché ici : [PATH_CUSTOM_CONFIG]/ori-oai-indexing/config/solr_home/prod-public/conf/schema.xml

<fields>
    ...
    <field name="dc.publisher" type="proper_noun" indexed="true" stored="true" multiValued="true"/>
    ...
</fields>

     Note : dans cet exemple, le champs dc:publisher est déjà déclaré dans la configuration par défaut.

La procédure complète est décrite dans la documentation du module ORI-OAI-indexing.

  • No labels