Warning: Constant WP_MEMORY_LIMIT already defined in /home/elorenzo/domains/arvo.es/public_html/dspace/wp-config.php on line 94
La API de Altmetric en DSpace | Hablando de DSpace

Altmétricas en DSpace. Trasteando con la API de Altmetric.

Las altmétricas o altmetrías miden el impacto de la investigación mediante el uso de métricas alternativas a las métricas de citas, cuantificando su presencia en la redes  sociales, en forma de menciones en la web social, descargas, enlaces, cobertura mediática, inclusión en gestores de referencias, etc . Como exponente principal de estas nuevas métricas, figura Altmetric, que pone a disposición de nuestros repositorios (y de quien quiera) de un mecanismo base de integración en forma de API.

Explicaremos una de las varias formas de usar esta API.  La incorporación del API de Altmetric en DSpace no es complicada de realizar, pues Clipboard02simplemente necesitamos acceder a la carpeta de nuestro tema y realizar una serie de modificaciones al código de vista-de-item.

Debemos saber que la API de Altmetric requiere que se le pase un parámetro de identificador de objeto. Puede ser un identificador doi, un PMid, una uri, etc…. El ejemplo lo vamos a aterrizar con doi, por lo que en el ítem DSpace tendremos algo así como un dc.identifier.doi para almacenar el valor correspondiente al identificador digital.

El primer fichero que debemos de editar es el fichero item-view.xsl (o equivalente en temas no mirage). Ahí debemos de realizar una llamada a una plantilla (template)  que llamaremos p.ej. itemSummaryView-altmetrics . Dicha llamada se deberá de realizar a su vez (ya sabéis que el xsl es un poco recursivo….)  sobre una plantilla que tenga acceso a la información dublin-core del item (por ejemplo itemSummaryView-DIM-fields), puesto que necesitamos pasar a la plantilla la información del metadato dc.identifier.doi

Llamada a la plantilla (en dónde pongamos la llamada ya es otro asunto, los iconos Altmetric se dibujarán en donde defináis):

<xsl:call-template name=»itemSummaryView-altmetrics»/>

Además debemos de crear la plantilla con el script de altmetrics,  algo así como:

<!– con codigo –>

 <xsl:template name=»itemSummaryView-altmetrics»>      
          <xsl:param name=»link» select=»//@OBJID» />
          <xsl:param name=»doi» select=»//dim:field[@element=’identifier’][@qualifier=’doi’]»/>
          <div class=»simple-view-icons»>
          <xsl:choose>
              <xsl:when test=»$doi»>
                <script type=’text/javascript’ src=’https://d1bxh8uas1mnw7.cloudfront.net/assets/embed.js’>&#160;</script>
                
                <span title=»Almetrics» data-badge-popover=»bottom» data-badge-type=»2″  data-hide-no-mentions=»true» class=»altmetric-embed»>
                    <xsl:attribute name=»data-doi»>
                         <xsl:value-of select=»$doi»/>
                    </xsl:attribute>
                </span>
                
            </xsl:when>
            <xsl:otherwise>
                <span title=»Almetrics» data-badge-popover=»bottom» data-badge-type=»2″  data-hide-no-mentions=»true» class=»altmetric-embed»>
                    <xsl:attribute name=»data-handle»>
                         <xsl:value-of select=»substring-after($link,’handle/’)»/>
                    </xsl:attribute>
                </span>
            </xsl:otherwise>
            </xsl:choose>
        </div>
      </xsl:template>

Una vez guardado no necesitamos rearrancar tomcat ni nada. Si véis que no aparece nada cercioraros de que estáis pasando un identifier.doi de un objeto que existe y mejor aún con citas… (es decir, las pruebas hacerlas con un código doi «con substancia»)

NOTA DISEÑO: para personalizar el icono, solo hay que cambiar el parámetro data-badge-type y ponerle un número, por ejemplo si ponemos data-badge-type=»4″ obtendremos el clásico donut o rosco de Altmetric. La información sobre los diferentes badges que podéis usar está en https://api.altmetric.com/embeds.html, variando desde el donut de Altmetric hasta «cosas» mas abstractas que seguro desconciertan a más de un autor…

Clipboard04  Clipboard07Clipboard08

                                                                                                                                                                 Pues que disfrutéis y uséis el código y que vuestros usuarios os lo agradezcan.

1 Comentarios.

  1. Claudia Trejos

    Queremos compartir y tratar de solucionar el siguiente error que se nos esta presentando «ERROR INTERNO DEL SISTEMA» cuando realizamos cualquier búsqueda que incluya la palabra «DE». Tenemos la versión 1.6.2 de Dspace

    — URL Was: http://repositorio.utp.edu.co/dspace/simple-search?query=de&submit=Buscar+
    — Method: GET
    — Parameters were:
    — submit: «Buscar »
    — query: «de»

    Exception:
    java.sql.SQLException: Query «de» returned unresolvable community
    at org.dspace.app.webui.servlet.SimpleSearchServlet.doDSGet(SimpleSearchServlet.java:345)
    at org.dspace.app.webui.servlet.DSpaceServlet.processRequest(DSpaceServlet.java:151)
    at org.dspace.app.webui.servlet.DSpaceServlet.doGet(DSpaceServlet.java:99)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:306)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.dspace.utils.servlet.DSpaceWebappServletFilter.doFilter(DSpaceWebappServletFilter.java:112)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:244)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:550)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:380)
    at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:294)
    at org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(AjpProtocol.java:183)
    at org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(AjpProtocol.java:169)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:288)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
    at java.lang.Thread.run(Thread.java:662)

    Agradecemos a quién nos pueda ayudar.

    • Buenas Claudia.

      Respecto a tu problema estoy viendo que es una versión 1.6.2 de JSPUI, (sería bueno que fueras pensando una actualización XD).

      Estuve comprobando el problema de donde puede venir, y simplemente te voy a dar unas pautas a ver si conseguimos que se solucione el problema ya que al no disponer del código fuente no puedo hacer una traza correctamente sobre el problema.

      El fallo viene de una clase en JSPUI llamada SimpleSearchServlet que al parecer a la hora de intentar buscar la cadena «DE» en los nombres de las comunidades da error. Esto puede deberse a que alguna comunidad se encuentre en un estado inconsistente. Por ello una posible solución podria ser haciendo una reindexacion del contenido del repositorio.
      Para ello lo que tienes que hacer es ejecutar en línea de comandos desde el pc en el que se encuentre tu repositorio el comando
      index-init, de la siguiente forma:

      [dspace]/bin/dspace index-init
      siendo [dspace] la ruta donde se encuentra vuestro DSpace de instalación. (al que apunta el tomcat)

      Una vez hecho deberás rearrancar el tomcat.

      https://wiki.duraspace.org/display/DSPACE/Re-index+DSpace

      Si el problema no se resuelve la otra opción que puedes hacer es vetar la palabra «de» de las búsquedas, ya que esta palabra no es de vital trascendencia a la hora de buscar podrías añadirlo al listado de palabras a bloquear en la búsqueda.
      Para ello en versiones 1.X de DSpace hay que tocar una clase Java llamada org.dspace.search.DSAnalyzer y alli en el String[] STOP_WORDS añadir el carácter «de» quedando algo tal que así

      private static final String[] STOP_WORDS =
      {

      // new stopwords (per MargretB)
      «a», «am», «and», «are», «as», «at», «be», «but», «by», «for»,
      «if», «in», «into», «is», «it», «no», «not», «of», «on», «or»,
      «the», «to», «was», «de»
      }

      Una vez modificado en el código fuente tendrías que compilar el código con el maven, desplegarlo con un ant update o ant update-code y por último rearrancar el tomcat.

      Bueno espero que te ayude algo estas respuestas.

      Ya me contarás

      Un saludo.

  2. Claudia Trejos

    Buenos días Ing. Nieto. muchas gracias por su colaboración y ayuda. Se realizo el proceso y se soluciono el error.

    Saludos