Project

General

Profile

« Previous | Next » 

Revision 63172

patch node for iris-people ids

View differences:

modules/dnet-isti/trunk/src/main/java/eu/dnetlib/msro/workflows/nodes/PatchCinecaIdsJobNode.java
1
package eu.dnetlib.msro.workflows.nodes;
2

  
3
import java.io.IOException;
4
import java.io.InputStream;
5
import java.io.InputStreamReader;
6
import java.util.HashMap;
7
import java.util.Map;
8

  
9
import org.apache.commons.lang3.StringUtils;
10
import org.dom4j.Document;
11
import org.dom4j.DocumentHelper;
12
import org.dom4j.Element;
13
import org.dom4j.Namespace;
14
import org.dom4j.Node;
15
import org.dom4j.QName;
16
import org.springframework.beans.factory.annotation.Autowired;
17
import org.springframework.beans.factory.annotation.Required;
18
import org.springframework.core.io.Resource;
19

  
20
import com.google.gson.Gson;
21
import com.google.gson.reflect.TypeToken;
22

  
23
import eu.dnetlib.enabling.resultset.factory.ResultSetFactory;
24
import eu.dnetlib.msro.workflows.graph.Arc;
25
import eu.dnetlib.msro.workflows.procs.Env;
26
import eu.dnetlib.rmi.common.ResultSet;
27
import eu.dnetlib.rmi.manager.MSROException;
28

  
29
public class PatchCinecaIdsJobNode extends SimpleJobNode {
30

  
31
	private String inputEprParam;
32
	private String outputEprParam;
33

  
34
	public static final String cinecaOaiPrefix = "oai:iris.cnr.it:";
35
	public static final String peopleOaiPrefix = "oai:it.cnr:prodotti:";
36

  
37
	private Resource idMapFile;
38

  
39
	@Autowired
40
	private ResultSetFactory resultSetFactory;
41

  
42
	@Override
43
	protected String execute(final Env env) throws Exception {
44

  
45
		@SuppressWarnings("unchecked")
46
		final ResultSet<String> rsIn = env.getAttribute(inputEprParam, ResultSet.class);
47

  
48
		final Map<String, String> idMap = loadMap(idMapFile);
49

  
50
		if (rsIn == null) { throw new MSROException("Passed rs is null"); }
51

  
52
		final ResultSet<String> rsOut = resultSetFactory.map(rsIn, String.class, xml -> patchId(xml, idMap));
53

  
54
		env.setAttribute(outputEprParam, rsOut);
55

  
56
		return Arc.DEFAULT_ARC;
57
	}
58

  
59
	protected Map<String, String> loadMap(final Resource mapResource) throws IOException {
60

  
61
		final Gson gson = new Gson();
62

  
63
		final TypeToken<HashMap<String, String>> tt = new TypeToken<HashMap<String, String>>() {};
64

  
65
		try (InputStream is = mapResource.getInputStream(); InputStreamReader reader = new InputStreamReader(is)) {
66
			return gson.fromJson(reader, tt.getType());
67
		}
68

  
69
	}
70

  
71
	protected String patchId(final String xml, final Map<String, String> idMap) {
72
		try {
73

  
74
			final Document doc = DocumentHelper.parseText(xml);
75

  
76
			final Element header = (Element) doc.selectSingleNode("//*[local-name() = 'header']");
77
			for (final Object o : header.selectNodes("./*[local-name() = 'identifier']")) {
78
				final Node n = (Node) o;
79
				final String oldValue = n.getText().trim();
80

  
81
				if (oldValue.startsWith(cinecaOaiPrefix)) {
82

  
83
					final String peopleId = idMap.get(StringUtils.substringAfter(oldValue, cinecaOaiPrefix));
84

  
85
					if (StringUtils.isNotBlank(peopleId)) {
86
						n.setText(peopleOaiPrefix + peopleId);
87
						header.addElement(new QName("hiddenIdentifier", new Namespace("isti", "http://openportal.isti.cnr.it"))).setText(oldValue);
88
					}
89
				}
90
			}
91

  
92
			return doc.asXML();
93
		} catch (final Exception e) {
94
			throw new RuntimeException(e);
95
		}
96
	}
97

  
98
	public String getInputEprParam() {
99
		return inputEprParam;
100
	}
101

  
102
	public void setInputEprParam(final String inputEprParam) {
103
		this.inputEprParam = inputEprParam;
104
	}
105

  
106
	public String getOutputEprParam() {
107
		return outputEprParam;
108
	}
109

  
110
	public void setOutputEprParam(final String outputEprParam) {
111
		this.outputEprParam = outputEprParam;
112
	}
113

  
114
	public Resource getIdMapFile() {
115
		return idMapFile;
116
	}
117

  
118
	@Required
119
	public void setIdMapFile(final Resource idMapFile) {
120
		this.idMapFile = idMapFile;
121
	}
122

  
123
}
modules/dnet-isti/trunk/src/main/resources/cineca-people/id_mapping.json
1
{}
modules/dnet-isti/trunk/src/main/resources/eu/dnetlib/isti/applicationContext-isti.properties
6 6

  
7 7
db.affiliations.url                     = jdbc:mysql://localhost:8889/isti_affiliations
8 8
db.affiliations.username                = dnet
9
db.affiliations.password                = dnetPwd
9
db.affiliations.password                = dnetPwd
10

  
11
patch.cineca.ids.file                   = classpath:/cineca-people/id_mapping.json
modules/dnet-isti/trunk/src/main/resources/eu/dnetlib/isti/applicationContext-isti.xml
9 9
		class="eu.dnetlib.msro.workflows.nodes.PimpaUpdateJobNode"
10 10
		scope="prototype" />
11 11

  
12
	<bean id="wfNodePatchCinecaIds"
13
		class="eu.dnetlib.msro.workflows.nodes.PatchCinecaIdsJobNode"
14
		scope="prototype"
15
		p:idMapFile="${patch.cineca.ids.file}"/>
16

  
12 17
	<!-- MDStore plugins -->
13 18
	<bean id="enrichOpenaireMDstorePlugin" class="eu.dnetlib.data.mdstore.plugins.EnrichOpenairePlugin" />
14 19

  
modules/dnet-isti/trunk/src/test/java/eu/dnetlib/msro/workflows/nodes/PatchCinecaIdsJobNodeTest.java
1
package eu.dnetlib.msro.workflows.nodes;
2

  
3
import static org.junit.Assert.assertTrue;
4
import static org.junit.jupiter.api.Assertions.assertEquals;
5
import static org.junit.jupiter.api.Assertions.assertNotEquals;
6

  
7
import java.util.HashMap;
8
import java.util.Map;
9

  
10
import org.apache.commons.io.IOUtils;
11
import org.dom4j.DocumentException;
12
import org.dom4j.DocumentHelper;
13
import org.junit.Before;
14
import org.junit.Ignore;
15
import org.junit.Test;
16
import org.springframework.core.io.FileSystemResource;
17
import org.springframework.core.io.Resource;
18

  
19
public class PatchCinecaIdsJobNodeTest {
20

  
21
	private PatchCinecaIdsJobNode node = new PatchCinecaIdsJobNode();
22

  
23
	private Map<String, String> idMap;
24

  
25
	@Before
26
	public void setUp() throws Exception {
27
		idMap = new HashMap<>();
28
		idMap.put("20.500.14243/404244", "425561");
29
		idMap.put("20.500.14243/340721", "377451");
30
		idMap.put("20.500.14243/340722", "377452");
31
		idMap.put("20.500.14243/340723", "377453");
32
	}
33

  
34
	@Test
35
	@Ignore
36
	public void testLoadMap() throws Exception {
37
		final Resource r = new FileSystemResource("/Users/michele/Develop/scripts/openportal_cineca/people-iris-ids.json");
38
		final Map<String, String> map = node.loadMap(r);
39
		System.out.println("MAP SIZE: " + map.size());
40
		assertTrue(map.size() > 10000);
41
	}
42

  
43
	@Test
44
	public void testPatchId_1() throws Exception {
45
		final String[] arr = patchId("record-01.xml");
46
		assertEquals("oai:it.cnr:prodotti:294753", arr[0]);
47
		assertEquals("oai:it.cnr:prodotti:294753", arr[1]);
48
		assertEquals(arr[0], arr[1]);
49
	}
50

  
51
	@Test
52
	public void testPatchId_2() throws Exception {
53
		final String[] arr = patchId("record-02.xml");
54
		assertEquals("oai:iris.cnr.it:20.500.14243/404244", arr[0]);
55
		assertEquals("oai:it.cnr:prodotti:425561", arr[1]);
56
		assertNotEquals(arr[0], arr[1]);
57
	}
58

  
59
	@Test
60
	public void testPatchId_3() throws Exception {
61
		final String[] arr = patchId("record-03.xml");
62
		assertEquals("oai:iris.cnr.it:20.500.14243/43516", arr[0]);
63
		assertEquals("oai:iris.cnr.it:20.500.14243/43516", arr[1]);
64
		assertEquals(arr[0], arr[1]);
65
	}
66

  
67
	private String[] patchId(final String file) throws Exception {
68
		final String xmlIn = IOUtils.toString(getClass().getResourceAsStream(file));
69
		final String xmlOut = node.patchId(xmlIn, idMap);
70
		return new String[] { extractId(xmlIn), extractId(xmlOut) };
71
	}
72

  
73
	private String extractId(final String xml) throws DocumentException {
74
		return DocumentHelper.parseText(xml).valueOf("//*[local-name()='header']/*[local-name()='identifier']");
75
	}
76

  
77
}
modules/dnet-isti/trunk/src/test/resources/eu/dnetlib/msro/workflows/nodes/record-01.xml
1
<oai:record xmlns:oai="http://www.openarchives.org/OAI/2.0/"
2
            xmlns:dri="http://www.driver-repository.eu/namespace/dri"
3
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
4
   <oai:header>
5
      <identifier xmlns="http://www.openarchives.org/OAI/2.0/">oai:it.cnr:prodotti:294753</identifier>
6
      <datestamp xmlns="http://www.openarchives.org/OAI/2.0/">2017-10-20T16:09:09Z</datestamp>
7
      <setSpec xmlns="http://www.openarchives.org/OAI/2.0/">openaire</setSpec>
8
      <setSpec xmlns="http://www.openarchives.org/OAI/2.0/">CDS074</setSpec>
9
   </oai:header>
10
   <metadata xmlns="http://www.openarchives.org/OAI/2.0/">
11
        <oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns=""
12
                 xmlns:dc="http://purl.org/dc/elements/1.1/"
13
                 xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
14
          <dc:type>info:eu-repo/semantics/other</dc:type>
15
          <dc:type>Software</dc:type>
16
          <dc:title>gCube Tabular Data Manager portlet</dc:title>
17
          <dc:creator>Panichi G.</dc:creator>
18
          <dc:creator>Mangiacrapa F.</dc:creator>
19
          <dc:language>eng</dc:language>
20
          <dc:description>A portlet for tabular data visualization and manipulation</dc:description>
21
          <dc:source>2014</dc:source>
22
          <dc:date>2014</dc:date>
23
          <dc:identifier>http://www.cnr.it/prodotto/i/294753</dc:identifier>
24
          <dc:identifier>https://publications.cnr.it/doc/294753</dc:identifier>
25
          <dc:identifier>http://www.gcube-system.org/index.php?option=com_distribution&amp;view=distribution&amp;release=stable#Portlets%20User</dc:identifier>
26
          <dc:relation>info:eu-repo/grantAgreement/EC/FP7/283644//Data e-Infrastructure Initiative for Fisheries Management and Conservation of Marine Living Resources/IMARINE</dc:relation>
27
          <dc:relation>info:cnr-pdr/author/idpersonaleesterno:18715/MANGIACRAPA/FRANCESCO</dc:relation>
28
          <dc:relation>info:cnr-pdr/author/matricola:15409/PANICHI/GIANCARLO</dc:relation>
29
          <dc:subject>Tabular</dc:subject>
30
          <dc:subject>Data</dc:subject>
31
          <dc:subject>Portlet</dc:subject>
32
        </oai_dc:dc>
33
      </metadata>
34
 </oai:record>
modules/dnet-isti/trunk/src/test/resources/eu/dnetlib/msro/workflows/nodes/record-02.xml
1
<?xml version="1.0" encoding="UTF-8"?>
2
<oai:record xmlns:oai="http://www.openarchives.org/OAI/2.0/"
3
            xmlns:dri="http://www.driver-repository.eu/namespace/dri"
4
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
5
   <oai:header>
6
      <dri:objIdentifier>iris_test_::00082934128cc79ed2e35d1a71c4cbaf</dri:objIdentifier>
7
      <dri:recordIdentifier>oai:iris.cnr.it:20.500.14243/404244</dri:recordIdentifier>
8
      <dri:dateOfCollection>2024-04-24T08:34:52.44+02:00</dri:dateOfCollection>
9
      <dri:repositoryId>c2be2c55-fae6-4c86-bb78-a1664cceac9e_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId>
10
      <dri:datasourceprefix>iris_test_</dri:datasourceprefix>
11
      <identifier xmlns="http://www.openarchives.org/OAI/2.0/">oai:iris.cnr.it:20.500.14243/404244</identifier>
12
      <datestamp xmlns="http://www.openarchives.org/OAI/2.0/">2024-03-02T03:04:55Z</datestamp>
13
      <setSpec xmlns="http://www.openarchives.org/OAI/2.0/">com_20.500.14243_22</setSpec>
14
      <setSpec xmlns="http://www.openarchives.org/OAI/2.0/">com_20.500.14243_21</setSpec>
15
      <setSpec xmlns="http://www.openarchives.org/OAI/2.0/">col_20.500.14243_23</setSpec>
16
      <setSpec xmlns="http://www.openarchives.org/OAI/2.0/">ou_ou294</setSpec>
17
      <setSpec xmlns="http://www.openarchives.org/OAI/2.0/">openaire</setSpec>
18
   </oai:header>
19
   <metadata xmlns="http://www.openarchives.org/OAI/2.0/">
20
      <oaire:resource xmlns:oaire="http://namespace.openaire.eu/schema/oaire/" xmlns=""
21
                      xmlns:rdf="http://www.w3.org/TR/rdf-concepts/"
22
                      xmlns:datacite="http://datacite.org/schema/kernel-4"
23
                      xmlns:doc="http://www.lyncode.com/xoai"
24
                      xmlns:xs="http://www.w3.org/2001/XMLSchema"
25
                      xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning"
26
                      xmlns:dc="http://purl.org/dc/elements/1.1/"
27
                      xmlns:exslt="http://exslt.org/common"
28
                      xsi:schemaLocation="http://namespace.openaire.eu/schema/oaire/ https://www.openaire.eu/schema/repo-lit/4.0/openaire.xsd">
29
         <datacite:titles>
30
            <datacite:title xml:lang="en">A digital system for image processing</datacite:title>
31
         </datacite:titles>
32
         <datacite:creators>
33
            <datacite:creator>
34
               <datacite:creatorName>Azzarelli L</datacite:creatorName>
35
            </datacite:creator>
36
            <datacite:creator>
37
               <datacite:creatorName>Chimenti M</datacite:creatorName>
38
            </datacite:creator>
39
         </datacite:creators>
40
         <datacite:alternateIdentifiers>
41
            <datacite:alternateIdentifier alternateIdentifierType="URN">https://hdl.handle.net/20.500.14243/404244</datacite:alternateIdentifier>
42
         </datacite:alternateIdentifiers>
43
         <datacite:dates>
44
            <datacite:date dateType="Available">2024-02-21</datacite:date>
45
            <datacite:date dateType="Accepted">1979</datacite:date>
46
            <datacite:date dateType="Issued">1979</datacite:date>
47
         </datacite:dates>
48
         <dc:language>eng</dc:language>
49
         <oaire:resourceType resourceTypeGeneral="literature"
50
                             uri="http://purl.org/coar/resource_type/c_6501">journal article</oaire:resourceType>
51
         <dc:description>No abstract available</dc:description>
52
         <dc:format>application/pdf</dc:format>
53
         <datacite:identifier identifierType="Handle">https://hdl.handle.net/20.500.14243/404244</datacite:identifier>
54
         <datacite:rights rightsURI="http://purl.org/coar/access_right/c_14cb">metadata only access</datacite:rights>
55
         <datacite:subjects>
56
            <datacite:subject>image processing</datacite:subject>
57
         </datacite:subjects>
58
         <datacite:sizes>
59
            <datacite:size>2841010 bytes</datacite:size>
60
         </datacite:sizes>
61
         <oaire:file accessRightsURI="" mimeType="application/pdf" objectType="fulltext">https://iris.cnr.it/bitstream/20.500.14243/404244/1/prod_425561-doc_151796.pdf</oaire:file>
62
      </oaire:resource>
63
   </metadata>
64
   <oai:about>
65
      <provenance xmlns="http://www.openarchives.org/OAI/2.0/provenance"
66
                  xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/provenance http://www.openarchives.org/OAI/2.0/provenance.xsd">
67
         <originDescription xmlns="" altered="true" harvestDate="2024-04-24T08:34:52.44+02:00">
68
            <baseURL>https%3A%2F%2Firis.cnr.it%2Foai%2Fopenaire4</baseURL>
69
            <identifier>oai:iris.cnr.it:20.500.14243/404244</identifier>
70
            <datestamp>2024-03-02T03:04:55Z</datestamp>
71
            <metadataNamespace/>
72
         </originDescription>
73
      </provenance>
74
   </oai:about>
75
</oai:record>
modules/dnet-isti/trunk/src/test/resources/eu/dnetlib/msro/workflows/nodes/record-03.xml
1
<?xml version="1.0" encoding="UTF-8"?>
2
<oai:record xmlns:oai="http://www.openarchives.org/OAI/2.0/"
3
            xmlns:dri="http://www.driver-repository.eu/namespace/dri"
4
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
5
   <oai:header>
6
      <dri:objIdentifier>iris_test_::000749fdd2010ce3df070928cb48ba76</dri:objIdentifier>
7
      <dri:recordIdentifier>oai:iris.cnr.it:20.500.14243/43516</dri:recordIdentifier>
8
      <dri:dateOfCollection>2024-04-24T08:34:40.537+02:00</dri:dateOfCollection>
9
      <dri:repositoryId>c2be2c55-fae6-4c86-bb78-a1664cceac9e_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId>
10
      <dri:datasourceprefix>iris_test_</dri:datasourceprefix>
11
      <identifier xmlns="http://www.openarchives.org/OAI/2.0/">oai:iris.cnr.it:20.500.14243/43516</identifier>
12
      <datestamp xmlns="http://www.openarchives.org/OAI/2.0/">2024-03-19T09:30:12Z</datestamp>
13
      <setSpec xmlns="http://www.openarchives.org/OAI/2.0/">com_20.500.14243_29</setSpec>
14
      <setSpec xmlns="http://www.openarchives.org/OAI/2.0/">com_20.500.14243_21</setSpec>
15
      <setSpec xmlns="http://www.openarchives.org/OAI/2.0/">col_20.500.14243_30</setSpec>
16
      <setSpec xmlns="http://www.openarchives.org/OAI/2.0/">ou_ou294</setSpec>
17
      <setSpec xmlns="http://www.openarchives.org/OAI/2.0/">openaire</setSpec>
18
   </oai:header>
19
   <metadata xmlns="http://www.openarchives.org/OAI/2.0/">
20
      <oaire:resource xmlns:oaire="http://namespace.openaire.eu/schema/oaire/" xmlns=""
21
                      xmlns:rdf="http://www.w3.org/TR/rdf-concepts/"
22
                      xmlns:datacite="http://datacite.org/schema/kernel-4"
23
                      xmlns:doc="http://www.lyncode.com/xoai"
24
                      xmlns:xs="http://www.w3.org/2001/XMLSchema"
25
                      xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning"
26
                      xmlns:dc="http://purl.org/dc/elements/1.1/"
27
                      xmlns:exslt="http://exslt.org/common"
28
                      xsi:schemaLocation="http://namespace.openaire.eu/schema/oaire/ https://www.openaire.eu/schema/repo-lit/4.0/openaire.xsd">
29
         <datacite:titles>
30
            <datacite:title xml:lang="en">Supporting Web usability for vision impaired users</datacite:title>
31
         </datacite:titles>
32
         <datacite:creators>
33
            <datacite:creator>
34
               <datacite:creatorName>Correani F</datacite:creatorName>
35
            </datacite:creator>
36
            <datacite:creator>
37
               <datacite:creatorName>Leporini B</datacite:creatorName>
38
               <datacite:nameIdentifier nameIdentifierScheme="ORCID" schemeURI="https://orcid.org">0000-0003-2469-9648</datacite:nameIdentifier>
39
            </datacite:creator>
40
            <datacite:creator>
41
               <datacite:creatorName>Paternò€ F</datacite:creatorName>
42
            </datacite:creator>
43
         </datacite:creators>
44
         <datacite:alternateIdentifiers>
45
            <datacite:alternateIdentifier alternateIdentifierType="DOI">10.1007/b95185</datacite:alternateIdentifier>
46
            <datacite:alternateIdentifier alternateIdentifierType="ISBN">978-3-540-23375-6</datacite:alternateIdentifier>
47
            <datacite:alternateIdentifier alternateIdentifierType="URN">000224665300020</datacite:alternateIdentifier>
48
            <datacite:alternateIdentifier alternateIdentifierType="URN">2-s2.0-35048856115</datacite:alternateIdentifier>
49
            <datacite:alternateIdentifier alternateIdentifierType="URN">https://hdl.handle.net/20.500.14243/43516</datacite:alternateIdentifier>
50
            <datacite:alternateIdentifier alternateIdentifierType="URL">http://www.springerlink.com/content/n6db4fmfgac2/tribution.as</datacite:alternateIdentifier>
51
         </datacite:alternateIdentifiers>
52
         <datacite:dates>
53
            <datacite:date dateType="Available">2024-02-19</datacite:date>
54
            <datacite:date dateType="Accepted">2004</datacite:date>
55
            <datacite:date dateType="Issued">2004</datacite:date>
56
         </datacite:dates>
57
         <dc:language>eng</dc:language>
58
         <oaire:resourceType resourceTypeGeneral="literature"
59
                             uri="http://purl.org/coar/resource_type/c_3248">book part</oaire:resourceType>
60
         <dc:description>The aim of this work is to provide designers and developers of Web applications with support to obtain systems that are usable for vision-impaired users. To this end, we have defined a number of design criteria to improve Web site navigation through screen readers or other similar devices. A test of navigation by blind and vision-impaired subjects showed that our criteria improved Web site usability both qualitatively and quantitatively. Subsequently, an inspection-based tool was developed to ease application of such criteria. Its main features are presented along with a discussion of some of the first application results.</dc:description>
61
         <dc:format>application/pdf</dc:format>
62
         <datacite:identifier identifierType="Handle">https://hdl.handle.net/20.500.14243/43516</datacite:identifier>
63
         <datacite:rights rightsURI="http://purl.org/coar/access_right/c_16ec">restricted access</datacite:rights>
64
         <datacite:subjects>
65
            <datacite:subject>Accessibility</datacite:subject>
66
            <datacite:subject>Usability</datacite:subject>
67
            <datacite:subject>Tool</datacite:subject>
68
            <datacite:subject>Evaluation</datacite:subject>
69
            <datacite:subject>Web</datacite:subject>
70
         </datacite:subjects>
71
         <datacite:sizes>
72
            <datacite:size>274753 bytes</datacite:size>
73
         </datacite:sizes>
74
         <oaire:file accessRightsURI="" mimeType="application/pdf" objectType="fulltext">https://iris.cnr.it/bitstream/20.500.14243/43516/1/prod_43914-doc_125140.pdf</oaire:file>
75
      </oaire:resource>
76
   </metadata>
77
   <oai:about>
78
      <provenance xmlns="http://www.openarchives.org/OAI/2.0/provenance"
79
                  xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/provenance http://www.openarchives.org/OAI/2.0/provenance.xsd">
80
         <originDescription xmlns="" altered="true" harvestDate="2024-04-24T08:34:40.537+02:00">
81
            <baseURL>https%3A%2F%2Firis.cnr.it%2Foai%2Fopenaire4</baseURL>
82
            <identifier>oai:iris.cnr.it:20.500.14243/43516</identifier>
83
            <datestamp>2024-03-19T09:30:12Z</datestamp>
84
            <metadataNamespace/>
85
         </originDescription>
86
      </provenance>
87
   </oai:about>
88
</oai:record>

Also available in: Unified diff