Project

General

Profile

« Previous | Next » 

Revision 43515

renaming

View differences:

modules/dnet-graph-domain/trunk/src/test/java/eu/dnetlib/pace/clustering/BlacklistAwareClusteringCombinerTest.java
1
package eu.dnetlib.pace.clustering;
2

  
3
import org.junit.Before;
4
import org.junit.Test;
5

  
6
import eu.dnetlib.pace.AbstractProtoPaceTest;
7
import eu.dnetlib.pace.config.Config;
8
import eu.dnetlib.pace.config.Type;
9
import eu.dnetlib.pace.model.FieldListImpl;
10
import eu.dnetlib.pace.model.FieldValueImpl;
11
import eu.dnetlib.pace.model.MapDocument;
12

  
13
public class BlacklistAwareClusteringCombinerTest extends AbstractProtoPaceTest {
14

  
15
	private Config config;
16

  
17
	@Before
18
	public void setUp() {
19
		config = getResultFullConf();
20
	}
21

  
22
	@Test
23
	public void testCombine() {
24
		final MapDocument result =
25
				result(config, "A", "Dipping in Cygnus X-2 in a multi-wavelength campaign due to absorption of extended ADC emission", "2013");
26
		final FieldListImpl fl = new FieldListImpl();
27
		fl.add(new FieldValueImpl(Type.String, "desc", "hello world description pipeline"));
28

  
29
		result.getFieldMap().put("desc", fl);
30

  
31
		fl.clear();
32
		fl.add(new FieldValueImpl(Type.String, "title", "lorem ipsum cabalie qwerty"));
33
		final FieldListImpl field = (FieldListImpl) result.getFieldMap().get("title");
34
		field.add(fl);
35

  
36
		System.out.println(BlacklistAwareClusteringCombiner.filterAndCombine(result, config, config.blacklists()));
37
	}
38
}
modules/dnet-graph-domain/trunk/src/test/java/eu/dnetlib/pace/clustering/ClusteringCombinerTest.java
1
package eu.dnetlib.pace.clustering;
2

  
3
import org.junit.Before;
4
import org.junit.Test;
5

  
6
import eu.dnetlib.pace.AbstractProtoPaceTest;
7
import eu.dnetlib.pace.config.Config;
8
import eu.dnetlib.pace.config.Type;
9
import eu.dnetlib.pace.model.FieldListImpl;
10
import eu.dnetlib.pace.model.FieldValueImpl;
11
import eu.dnetlib.pace.model.MapDocument;
12

  
13
public class ClusteringCombinerTest extends AbstractProtoPaceTest {
14

  
15
	private Config config;
16

  
17
	@Before
18
	public void setUp() {
19
		config = getResultFullConf();
20
	}
21

  
22
	@Test
23
	public void testCombine() {
24
		String title = "Dipping in Cygnus X-2 in a multi-wavelength campaign due to absorption of extended ADC emission";
25
		MapDocument result = result(config, "A", title, "2013");
26

  
27
		FieldListImpl fl = new FieldListImpl();
28
		fl.add(new FieldValueImpl(Type.String, "desc", "lorem ipsum cabalie qwerty"));
29

  
30
		result.getFieldMap().put("desc", fl);
31
		System.out.println(title);
32
		System.out.println(ClusteringCombiner.combine(result, config));
33
	}
34

  
35
}
modules/dnet-graph-domain/trunk/src/test/java/eu/dnetlib/pace/AbstractProtoPaceTest.java
1
package eu.dnetlib.pace;
2

  
3
import java.io.IOException;
4
import java.io.StringWriter;
5
import java.util.ArrayList;
6
import java.util.List;
7

  
8
import com.google.common.collect.Lists;
9
import com.google.gson.Gson;
10
import eu.dnetlib.data.mapreduce.util.DNGFTest;
11
import eu.dnetlib.data.proto.DNGFProtos.DNGF;
12
import eu.dnetlib.data.proto.DNGFProtos.DNGFEntity;
13
import eu.dnetlib.data.proto.FieldTypeProtos.Qualifier;
14
import eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty;
15
import eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty.Builder;
16
import eu.dnetlib.data.proto.OrganizationProtos.Organization;
17
import eu.dnetlib.data.proto.PersonProtos.Person;
18
import eu.dnetlib.data.proto.PublicationProtos.Publication;
19
import eu.dnetlib.data.proto.TypeProtos;
20
import eu.dnetlib.pace.config.Config;
21
import eu.dnetlib.pace.config.DedupConfig;
22
import eu.dnetlib.pace.config.Type;
23
import eu.dnetlib.pace.model.Field;
24
import eu.dnetlib.pace.model.FieldValueImpl;
25
import eu.dnetlib.pace.model.MapDocument;
26
import eu.dnetlib.pace.model.ProtoDocumentBuilder;
27
import eu.dnetlib.pace.model.gt.GTAuthor;
28
import eu.dnetlib.pace.model.gt.GTAuthorMapper;
29
import org.apache.commons.io.IOUtils;
30
import org.apache.commons.lang3.RandomStringUtils;
31
import org.apache.commons.lang3.StringUtils;
32

  
33
public abstract class AbstractProtoPaceTest extends DNGFTest {
34

  
35
	protected DedupConfig getResultFullConf() {
36
		return DedupConfig.load(readFromClasspath("/eu/dnetlib/pace/result.full.pace.conf"));
37
	}
38

  
39
	protected DedupConfig getResultSimpleConf() {
40
		return DedupConfig.load(readFromClasspath("/eu/dnetlib/pace/result.simple.pace.conf"));
41
	}
42

  
43
	protected DedupConfig getResultConf() {
44
		return DedupConfig.load(readFromClasspath("/eu/dnetlib/pace/result.pace.conf"));
45
	}
46

  
47
	protected DedupConfig getOrganizationSimpleConf() {
48
		return DedupConfig.load(readFromClasspath("/eu/dnetlib/pace/organization.pace.conf"));
49
	}
50

  
51
	protected DedupConfig getResultAuthorsConf() {
52
		return DedupConfig.load(readFromClasspath("/eu/dnetlib/pace/result.authors.pace.conf"));
53
	}
54

  
55
	protected DedupConfig getPersonConf() {
56
		return DedupConfig.load(readFromClasspath("/eu/dnetlib/pace/person.pace.conf"));
57
	}
58

  
59
	protected DedupConfig getResultProdConf() {
60
		return DedupConfig.load(readFromClasspath("/eu/dnetlib/pace/result.prod.pace.conf"));
61
	}
62

  
63
	protected MapDocument person(final Config conf, final String id, final DNGF oaf) {
64
		return ProtoDocumentBuilder.newInstance(id, oaf.getEntity(), conf.model());
65
	}
66

  
67
	protected DNGF getPersonGT(final String path) {
68
		return new GTAuthorMapper().map(getGTAuthor(path));
69
	}
70

  
71
	protected GTAuthor getGTAuthor(final String path) {
72

  
73
		final Gson gson = new Gson();
74

  
75
		final String json = readFromClasspath(path);
76

  
77
		final GTAuthor gta = gson.fromJson(json, GTAuthor.class);
78

  
79
		return gta;
80
	}
81

  
82
	private String readFromClasspath(final String filename) {
83
		final StringWriter sw = new StringWriter();
84
		try {
85
			IOUtils.copy(getClass().getResourceAsStream(filename), sw);
86
			return sw.toString();
87
		} catch (final IOException e) {
88
			throw new RuntimeException("cannot load resource from classpath: " + filename);
89
		}
90
	}
91

  
92
	protected MapDocument result(final Config config, final String id, final String title) {
93
		return result(config, id, title, null, new ArrayList<String>(), null);
94
	}
95

  
96
	protected MapDocument result(final Config config, final String id, final String title, final String date) {
97
		return result(config, id, title, date, new ArrayList<String>(), null);
98
	}
99

  
100
	protected MapDocument result(final Config config, final String id, final String title, final String date, final List<String> pid) {
101
		return result(config, id, title, date, pid, null);
102
	}
103

  
104
	protected MapDocument result(final Config config, final String id, final String title, final String date, final String pid) {
105
		return result(config, id, title, date, pid, null);
106
	}
107

  
108
	protected MapDocument result(final Config config, final String id, final String title, final String date, final String pid, final List<String> authors) {
109
		return result(config, id, title, date, Lists.newArrayList(pid), authors);
110
	}
111

  
112
	protected MapDocument result(final Config config, final String id, final String title, final String date, final List<String> pid, final List<String> authors) {
113
		final Publication.Metadata.Builder metadata = Publication.Metadata.newBuilder();
114
		if (!StringUtils.isBlank(title)) {
115
			metadata.addTitle(getStruct(title, getQualifier("main title", "dnet:titles")));
116
			metadata.addTitle(getStruct(RandomStringUtils.randomAlphabetic(10), getQualifier("alternative title", "dnet:titles")));
117
		}
118
		if (!StringUtils.isBlank(date)) {
119
			metadata.setDateofacceptance(sf(date));
120
		}
121

  
122
		final DNGFEntity.Builder entity = dngfEntity(id, TypeProtos.Type.publication);
123
		final Publication.Builder result = Publication.newBuilder().setMetadata(metadata);
124

  
125
		if (authors != null) {
126
			for (final String author : authors) {
127
				result.addAuthor(person(author));
128
			}
129
		}
130

  
131
		entity.setPublication(result);
132

  
133
		if (pid != null) {
134
			for(String p : pid) {
135
				if (!StringUtils.isBlank(p)) {
136
					entity.addPid(sp(p, "doi"));
137
					//entity.addPid(sp(RandomStringUtils.randomAlphabetic(10), "oai"));
138
				}
139
			}
140
		}
141

  
142
		final DNGFEntity build = entity.build();
143
		return ProtoDocumentBuilder.newInstance(id, build, config.model());
144
	}
145

  
146
	private Person.Builder person(final String author) {
147
		final Person.Builder person = Person.newBuilder();
148

  
149
		final eu.dnetlib.pace.model.Person p = new eu.dnetlib.pace.model.Person(author, false);
150
		final Person.Metadata.Builder metadata = Person.Metadata.newBuilder();
151
		if (p.isAccurate()) {
152
			metadata.setFirstname(sf(p.getNormalisedFirstName()));
153
			metadata.addSecondnames(sf(p.getNormalisedSurname()));
154
			metadata.setFullname(sf(p.getNormalisedFullname()));
155
		} else {
156
			metadata.setFullname(sf(p.getOriginal()));
157
		}
158

  
159
		return person.setMetadata(metadata);
160
	}
161

  
162
	private DNGFEntity.Builder dngfEntity(final String id, final eu.dnetlib.data.proto.TypeProtos.Type type) {
163
		final DNGFEntity.Builder entity = DNGFEntity.newBuilder().setId(id).setType(type);
164
		return entity;
165
	}
166

  
167
	protected MapDocument organization(final Config config, final String id, final String legalName) {
168
		return organization(config, id, legalName, null);
169
	}
170

  
171
	protected MapDocument organization(final Config config, final String id, final String legalName, final String legalShortName) {
172
		final Organization.Metadata.Builder metadata = Organization.Metadata.newBuilder();
173
		if (legalName != null) {
174
			metadata.setLegalname(sf(legalName));
175
		}
176
		if (legalShortName != null) {
177
			metadata.setLegalshortname(sf(legalShortName));
178
		}
179

  
180
		final DNGFEntity.Builder entity = dngfEntity(id, TypeProtos.Type.publication);
181
		entity.setOrganization(Organization.newBuilder().setMetadata(metadata));
182

  
183
		return ProtoDocumentBuilder.newInstance(id, entity.build(), config.model());
184
	}
185

  
186
	private StructuredProperty sp(final String pid, final String type) {
187
		final Builder pidSp =
188
				StructuredProperty.newBuilder().setValue(pid)
189
						.setQualifier(Qualifier.newBuilder().setClassid(type).setClassname(type).setSchemeid("dnet:pid_types").setSchemename("dnet:pid_types"));
190
		return pidSp.build();
191
	}
192

  
193
	protected Field title(final String s) {
194
		return new FieldValueImpl(Type.String, "title", s);
195
	}
196

  
197
	protected static StructuredProperty.Builder getStruct(final String value, final Qualifier.Builder qualifier) {
198
		return StructuredProperty.newBuilder().setValue(value).setQualifier(qualifier);
199
	}
200

  
201
	/*
202
	 * protected static StringField.Builder sf(final String s) { return StringField.newBuilder().setValue(s); }
203
	 * 
204
	 * protected static Qualifier.Builder getQualifier(final String classname, final String schemename) { return
205
	 * Qualifier.newBuilder().setClassid(classname).setClassname(classname).setSchemeid(schemename).setSchemename(schemename); }
206
	 */
207

  
208
}
modules/dnet-graph-domain/trunk/src/test/java/eu/dnetlib/pace/model/ProtoDocumentBuilderTest.java
1
package eu.dnetlib.pace.model;
2

  
3
import static org.junit.Assert.assertFalse;
4
import static org.junit.Assert.assertTrue;
5

  
6
import org.junit.Test;
7

  
8
import com.google.common.collect.Iterables;
9
import com.google.common.collect.Sets;
10
import com.google.common.collect.Sets.SetView;
11

  
12
import eu.dnetlib.pace.AbstractProtoPaceTest;
13
import eu.dnetlib.pace.config.Config;
14

  
15
public class ProtoDocumentBuilderTest extends AbstractProtoPaceTest {
16

  
17
	@Test
18
	public void test_serialise1() {
19

  
20
		final String id = "12345";
21

  
22
		final Config config = getResultFullConf();
23

  
24
		final MapDocument document = ProtoDocumentBuilder.newInstance(id, getResult(id), config.model());
25

  
26
		assertFalse(document.fieldNames().isEmpty());
27
		assertFalse(Iterables.isEmpty(document.fields()));
28

  
29
		System.out.println("original:\n" + document);
30

  
31
		final String stringDoc = MapDocumentSerializer.toString(document);
32

  
33
		System.out.println("srialization:\n" + stringDoc);
34

  
35
		final MapDocument decoded = MapDocumentSerializer.decode(stringDoc.getBytes());
36

  
37
		final SetView<String> diff = Sets.difference(document.fieldNames(), decoded.fieldNames());
38

  
39
		assertTrue(diff.isEmpty());
40

  
41
		System.out.println("decoded:\n" + decoded);
42
	}
43

  
44
	@Test
45
	public void test_serialise2() {
46

  
47
		final String id = "12345";
48
		final String path = "/eu/dnetlib/pace/model/gt.author.manghi1.json";
49

  
50
		final Config config = getPersonConf();
51

  
52
		final MapDocument document = ProtoDocumentBuilder.newInstance(id, getPersonGT(path).getEntity(), config.model());
53

  
54
		assertFalse(document.fieldNames().isEmpty());
55
		assertFalse(Iterables.isEmpty(document.fields()));
56

  
57
		System.out.println("original:\n" + document);
58

  
59
		final String stringDoc = MapDocumentSerializer.toString(document);
60

  
61
		System.out.println("srialization:\n" + stringDoc);
62

  
63
		final MapDocument decoded = MapDocumentSerializer.decode(stringDoc.getBytes());
64

  
65
		final SetView<String> diff = Sets.difference(document.fieldNames(), decoded.fieldNames());
66

  
67
		assertTrue(diff.isEmpty());
68

  
69
		System.out.println("decoded:\n" + decoded);
70
	}
71

  
72
}
modules/dnet-graph-domain/trunk/src/test/java/eu/dnetlib/pace/model/gt/AuthorTest.java
1
package eu.dnetlib.pace.model.gt;
2

  
3
import static org.junit.Assert.assertTrue;
4

  
5
import java.util.Set;
6

  
7
import org.junit.Test;
8

  
9
import com.google.common.collect.Sets;
10

  
11
import eu.dnetlib.pace.model.gt.Author;
12
import eu.dnetlib.pace.model.gt.Authors;
13

  
14
public class AuthorTest {
15

  
16
	@Test
17
	public void test() {
18
		final Set<Author> s1 = getAuthors(3);
19
		final Set<Author> s2 = getAuthors(3);
20

  
21
		final Set<Author> i = Sets.intersection(s1, s2);
22

  
23
		System.out.println(i);
24

  
25
		assertTrue(i.size() == 3);
26

  
27
	}
28

  
29
	@Test
30
	public void test1() {
31
		final Authors a1 = new Authors(a("1", "Wang, M."));
32
		final Authors a2 = new Authors(a("1", "Wang, M."));
33

  
34
		final Set<Author> i = Sets.intersection(a1, a2);
35

  
36
		assertTrue(i.size() == 1);
37

  
38
	}
39

  
40
	private Set<Author> getAuthors(final int n) {
41
		final Set<Author> s = Sets.newHashSet();
42

  
43
		for (int i = 0; i < n; i++) {
44
			s.add(a(i + "", "name" + i));
45
		}
46
		return s;
47
	}
48

  
49
	private Author a(final String id, final String fullname) {
50
		final Author a = new Author();
51
		a.setId(id);
52
		a.setFullname(fullname);
53
		return a;
54
	}
55

  
56
}
modules/dnet-graph-domain/trunk/src/test/java/eu/dnetlib/pace/distance/DetectorTest.java
1
package eu.dnetlib.pace.distance;
2

  
3
import static org.junit.Assert.assertTrue;
4

  
5
import java.util.ArrayList;
6
import java.util.List;
7

  
8
import eu.dnetlib.pace.distance.eval.ScoreResult;
9
import org.junit.Test;
10

  
11
import com.google.common.collect.Lists;
12

  
13
import eu.dnetlib.pace.AbstractProtoPaceTest;
14
import eu.dnetlib.pace.config.Config;
15
import eu.dnetlib.pace.model.MapDocument;
16

  
17
public class DetectorTest extends AbstractProtoPaceTest {
18

  
19
	@Test
20
	public void testScoreResult() {
21
		final Config config = getResultProdConf();
22

  
23
		final MapDocument resA = result(config, "A", "Recent results from CDFsd");
24
		final MapDocument resB = result(config, "B", "Recent results from CDF");
25

  
26
		final ScoreResult sr = new PaceDocumentDistance().between(resA, resB, config);
27

  
28
		System.out.println(sr.toString());
29
	}
30

  
31
	@Test
32
	public void testDistanceResultSimple() {
33
		final Config config = getResultSimpleConf();
34

  
35
		final MapDocument resA = result(config, "A", "Recent results from CDF");
36
		final MapDocument resB = result(config, "B", "Recent results from CDF");
37

  
38
		final ScoreResult sr = new PaceDocumentDistance().between(resA, resB, config);
39
		final double d = sr.getScore();
40
		System.out.println(String.format(" d ---> %s", d));
41

  
42
		assertTrue(d == 1.0);
43
	}
44

  
45
	@Test
46
	public void testDistanceResultSimpleMissingDates() {
47
		final Config config = getResultSimpleConf();
48

  
49
		final MapDocument resA = result(config, "A", "Recent results from BES");
50
		final MapDocument resB = result(config, "A", "Recent results from CES");
51

  
52
		final ScoreResult sr = new PaceDocumentDistance().between(resA, resB, config);
53
		final double d = sr.getScore();
54
		System.out.println(String.format(" d ---> %s", d));
55

  
56
		assertTrue(d > 0.97);
57
	}
58

  
59
	@Test
60
	public void testDistanceResultInvalidDate() {
61
		final Config config = getResultConf();
62

  
63
		final MapDocument resA = result(config, "A", "title title title 6BESR", "2013-01-05");
64
		final MapDocument resB = result(config, "B", "title title title 6BESR", "qwerty");
65

  
66
		final ScoreResult sr = new PaceDocumentDistance().between(resA, resB, config);
67
		final double d = sr.getScore();
68
		System.out.println(String.format(" d ---> %s", d));
69

  
70
		assertTrue(d == 1.0);
71
	}
72

  
73
	@Test
74
	public void testDistanceResultMissingOneDate() {
75
		final Config config = getResultConf();
76

  
77
		final MapDocument resA = result(config, "A", "title title title 6BESR", null);
78
		final MapDocument resB = result(config, "B", "title title title 6CLER", "2012-02");
79

  
80
		final ScoreResult sr = new PaceDocumentDistance().between(resA, resB, config);
81
		double d = sr.getScore();
82
		System.out.println(String.format(" d ---> %s", d));
83

  
84
		assertTrue((d > 0.9) && (d < 1.0));
85
	}
86

  
87
	@Test
88
	public void testDistanceResult() {
89
		final Config config = getResultConf();
90

  
91
		final MapDocument resA = result(config, "A", "title title title BES", "");
92
		final MapDocument resB = result(config, "B", "title title title CLEO");
93

  
94
		final ScoreResult sr = new PaceDocumentDistance().between(resA, resB, config);
95
		double d = sr.getScore();
96
		System.out.println(String.format(" d ---> %s", d));
97

  
98
		assertTrue((d > 0.9) && (d < 1.0));
99
	}
100

  
101
	@Test
102
	public void testDistanceResultMissingTwoDate() {
103
		final Config config = getResultConf();
104

  
105
		final MapDocument resA = result(config, "A", "title title title 6BESR");
106
		final MapDocument resB = result(config, "B", "title title title 6CLER");
107

  
108
		final ScoreResult sr = new PaceDocumentDistance().between(resA, resB, config);
109
		double d = sr.getScore();
110
		System.out.println(String.format(" d ---> %s", d));
111

  
112
		assertTrue((d > 0.9) && (d < 1.0));
113
	}
114

  
115
	@Test
116
	public void testDistanceOrganizationIgnoreMissing() {
117

  
118
		final Config config = getOrganizationSimpleConf();
119

  
120
		final MapDocument orgA = organization(config, "A", "CONSIGLIO NAZIONALE DELLE RICERCHE");
121
		final MapDocument orgB = organization(config, "B", "CONSIGLIO NAZIONALE DELLE RICERCHE", "CNR");
122

  
123
		final ScoreResult sr = new PaceDocumentDistance().between(orgA, orgB, config);
124
		final double d = sr.getScore();
125
		System.out.println(String.format(" d ---> %s", d));
126

  
127
		assertTrue(d == 1.0);
128
	}
129

  
130
	@Test
131
	public void testDistanceResultCase1() {
132

  
133
		final Config config = getResultConf();
134

  
135
		final MapDocument resA = result(config, "A", "Search the Standard Model Higgs boson", "2003");
136
		final MapDocument resB = result(config, "B", "Search for the Standard Model Higgs Boson", "2003");
137

  
138
		final ScoreResult sr = new PaceDocumentDistance().between(resA, resB, config);
139
		double d = sr.getScore();
140
		System.out.println(String.format(" d ---> %s", d));
141

  
142
		assertTrue((d > 0.9) && (d < 1.0));
143
	}
144

  
145
	@Test
146
	public void testDistanceResultCaseDoiMatch1() {
147
		final Config config = getResultConf();
148

  
149
		final MapDocument resA = result(config, "A", "Search the Standard Model Higgs boson", "2003", "10.1594/PANGAEA.726855");
150
		final MapDocument resB = result(config, "B", "Search the Standard Model Higgs Boson", "2003", "10.1594/PANGAEA.726855");
151

  
152
		final ScoreResult sr = new PaceDocumentDistance().between(resA, resB, config);
153
		double d = sr.getScore();
154
		System.out.println(String.format(" d ---> %s", d));
155

  
156
		assertTrue("exact DOIs will produce an exact match", d == 1.0);
157
	}
158

  
159
	@Test
160
	public void testDistanceResultCaseDoiMatch2() {
161
		final Config config = getResultConf();
162

  
163
		final MapDocument resA = result(config, "A", "Conference proceedings on X. Appendix", "2003", "10.1594/PANGAEA.726855");
164
		final MapDocument resB = result(config, "B", "Search the Standard Model Higgs Boson", "2005", "10.1594/PANGAEA.726855");
165

  
166
		final ScoreResult sr = new PaceDocumentDistance().between(resA, resB, config);
167
		double d = sr.getScore();
168
		System.out.println(String.format(" d ---> %s", d));
169

  
170
		assertTrue("exact DOIs will produce an exact match, regardless of different titles or publication years", d == 1.0);
171
	}
172

  
173
	@Test
174
	public void testDistanceResultCaseDoiMatch3() {
175
		final Config config = getResultConf();
176

  
177
		final MapDocument resA = result(config, "A", "Conference proceedings on X. Appendix", "2003", "10.1016/j.jmb.2010.12.024");
178
		final MapDocument resB = result(config, "B", "Conference proceedings on X. Appendix", "2003");
179

  
180
		final ScoreResult sr = new PaceDocumentDistance().between(resA, resB, config);
181
		double d = sr.getScore();
182
		System.out.println(String.format(" d ---> %s", d));
183

  
184
		assertTrue("a missing DOI will casue the comparsion to continue with the following conditions", d == 1.0);
185
	}
186

  
187
	@Test
188
	public void testDistanceResultCaseDoiMatch4() {
189
		final Config config = getResultConf();
190

  
191
		final MapDocument resA = result(config, "A", "Conference proceedings on X. Appendix", "2003", "10.1016/j.jmb.2010.12.024");
192
		final MapDocument resB = result(config, "B", "Conference proceedings on X. Appendix", "2005");
193

  
194
		final ScoreResult sr = new PaceDocumentDistance().between(resA, resB, config);
195
		double d = sr.getScore();
196
		System.out.println(String.format(" d ---> %s", d));
197

  
198
		assertTrue("a missing DOI, comparsion continues with the following conditions, different publication years will drop the score to 0", d == 0.0);
199
	}
200

  
201
	@Test
202
	public void testDistanceResultCaseDoiMatch5() {
203

  
204
		final Config config = getResultConf();
205

  
206
		final MapDocument resA = result(config, "A", "Search for the Standard Model Higgs Boson", "2003", "10.1016/j.jmb.2010.12.020");
207
		final MapDocument resB = result(config, "B", "Search the Standard Model Higgs Boson", "2003");
208

  
209
		final ScoreResult sr = new PaceDocumentDistance().between(resA, resB, config);
210
		double d = sr.getScore();
211
		System.out.println(String.format(" d ---> %s", d));
212

  
213
		assertTrue("a missing DOI, comparsion continues with the following conditions", (d > 0.9) && (d < 1.0));
214
	}
215

  
216
	@Test
217
	public void testDistanceResultCaseDoiMatch6() {
218
		final Config config = getResultConf();
219

  
220
		final MapDocument resA = result(config, "A", "Conference proceedings on X. Appendix", "2003", "10.1016/j.jmb.2010.12.024");
221
		final MapDocument resB = result(config, "B", "Conference proceedings on X. Appendix", "2003", "anotherDifferentDOI");
222

  
223
		final ScoreResult sr = new PaceDocumentDistance().between(resA, resB, config);
224
		double d = sr.getScore();
225
		System.out.println(String.format(" d ---> %s", d));
226

  
227
		assertTrue("different DOIs will drop the score to 0, regardless of the other fields", d == 0.0);
228
	}
229

  
230
	@Test
231
	public void testDistanceResultCaseDoiMatch7() {
232
		final Config config = getResultConf();
233

  
234
		final MapDocument resA = result(config, "A", "Adrenal Insufficiency asd asd", "1951", Lists.newArrayList("PMC2037944", "axdsds"));
235
		final MapDocument resB = result(config, "B", "Adrenal Insufficiency", "1951", "PMC2037944");
236

  
237
		final ScoreResult sr = new PaceDocumentDistance().between(resA, resB, config);
238
		double d = sr.getScore();
239
		System.out.println(String.format(" d ---> %s", d));
240

  
241
		assertTrue("different DOIs will drop the score to 0, regardless of the other fields", d > 0.9 & d < 1);
242
	}
243

  
244
	// http://dx.doi.org/10.1594/PANGAEA.726855 doi:10.1594/PANGAEA.726855
245

  
246
	@Test
247
	public void testDistanceResultCaseAuthor1() {
248

  
249
		final Config config = getResultAuthorsConf();
250

  
251
		final List<String> authorsA = Lists.newArrayList("a", "b", "c", "d");
252
		final List<String> authorsB = Lists.newArrayList("a", "b", "c");
253
		final List<String> pid = Lists.newArrayList();
254

  
255
		final MapDocument resA = result(config, "A", "Search the Standard Model Higgs Boson", "2003", pid, authorsA);
256
		final MapDocument resB = result(config, "B", "Search the Standard Model Higgs Boson", "2003", pid, authorsB);
257

  
258
		final ScoreResult sr = new PaceDocumentDistance().between(resA, resB, config);
259
		final double d = sr.getScore();
260
		System.out.println(String.format(" d ---> %s", d));
261

  
262
		assertTrue(d == 0.0);
263
	}
264

  
265
	@Test
266
	public void testDistanceResultCaseAuthor2() {
267

  
268
		final Config config = getResultAuthorsConf();
269

  
270
		final List<String> authorsA = Lists.newArrayList("a", "b", "c");
271
		final List<String> authorsB = Lists.newArrayList("a", "b", "c");
272
		final List<String> pid = Lists.newArrayList();
273

  
274
		final MapDocument resA = result(config, "A", "Search the Standard Model Higgs Boson", "2003", pid, authorsA);
275
		final MapDocument resB = result(config, "B", "Search the Standard Model Higgs Boson", "2003", pid, authorsB);
276

  
277
		final ScoreResult sr = new PaceDocumentDistance().between(resA, resB, config);
278
		final double d = sr.getScore();
279
		System.out.println(String.format(" d ---> %s", d));
280

  
281
		assertTrue(d == 1.0);
282
	}
283

  
284
	@Test
285
	public void testDistanceResultCaseAuthor3() {
286

  
287
		final Config config = getResultAuthorsConf();
288

  
289
		final List<String> authorsA = Lists.newArrayList("Bardi, A.", "Manghi, P.", "Artini, M.");
290
		final List<String> authorsB = Lists.newArrayList("Bardi Alessia", "Manghi Paolo", "Artini Michele");
291
		final List<String> pid = Lists.newArrayList();
292

  
293
		final MapDocument resA = result(config, "A", "Search the Standard Model Higgs Boson", "2003", pid, authorsA);
294
		final MapDocument resB = result(config, "B", "Search the Standard Model Higgs Boson", "2003", pid, authorsB);
295

  
296
		final ScoreResult sr = new PaceDocumentDistance().between(resA, resB, config);
297
		double d = sr.getScore();
298
		System.out.println(String.format(" d ---> %s", d));
299

  
300
		assertTrue((d > 0.9) && (d < 1.0));
301
	}
302

  
303
	@Test
304
	public void testDistanceResultCaseAuthor4() {
305

  
306
		final Config config = getResultAuthorsConf();
307

  
308
		final List<String> authorsA = Lists.newArrayList("Bardi, Alessia", "Manghi, Paolo", "Artini, Michele", "a");
309
		final List<String> authorsB = Lists.newArrayList("Bardi Alessia", "Manghi Paolo", "Artini Michele");
310
		final List<String> pid = Lists.newArrayList();
311

  
312
		final MapDocument resA = result(config, "A", "Search the Standard Model Higgs Boson", "2003", pid, authorsA);
313
		final MapDocument resB = result(config, "B", "Search the Standard Model Higgs Boson", "2003", pid, authorsB);
314

  
315
		final ScoreResult sr = new PaceDocumentDistance().between(resA, resB, config);
316
		final double d = sr.getScore();
317
		System.out.println(String.format(" d ---> %s", d));
318

  
319
		// assertTrue(d.getScore() == 0.0);
320
	}
321

  
322
	@Test
323
	public void testDistanceResultFullConf() {
324

  
325
		final Config config = getResultFullConf();
326

  
327
		final List<String> authorsA = Lists.newArrayList("Nagarajan Pranesh", "Guy Vautier", "Punyanganie de Silva");
328
		final List<String> authorsB = Lists.newArrayList("Pranesh Nagarajan", "Vautier Guy", "de Silva Punyanganie");
329

  
330
		final MapDocument resA =
331
				result(config, "A", "Presentations of perforated colonic pathology in patients with polymyalgia rheumatica: two case reports", "2010",
332
						"10.1186/1752-1947-4-299", authorsA);
333

  
334
		final MapDocument resB =
335
				result(config, "B", "Presentations of perforated colonic pathology in patients with polymyalgia rheumatica: two case reports", "2010",
336
						"10.1186/1752-1947-4-299", authorsB);
337

  
338
		final ScoreResult sr = new PaceDocumentDistance().between(resA, resB, config);
339
		final double d = sr.getScore();
340
		System.out.println(String.format(" d ---> %s", d));
341

  
342
		// assertTrue(d.getScore() == 0.0);
343
	}
344

  
345
	@Test
346
	public void testDistanceProdConf1() {
347

  
348
		final Config config = getResultProdConf();
349

  
350
		final MapDocument resA =
351
				result(config,
352
						"A",
353
						" Analysis of Transfer Embryo-Derived de-duplication");
354
		final MapDocument resB =
355
				result(config,
356
						"B",
357
						" Analysis of Transfer Embryo Derived deduplication");
358

  
359
		final ScoreResult sr = new PaceDocumentDistance().between(resA, resB, config);
360
		final double d = sr.getScore();
361
		System.out.println(String.format(" d ---> %s", d));
362

  
363
		// assertTrue(d.getScore() == 0.0);
364
	}
365

  
366
	@Test
367
	public void testDistanceProdConf2() {
368

  
369
		final Config config = getResultProdConf();
370

  
371
		final MapDocument resA =
372
				result(config,
373
						"A",
374
						"qwerty aaabbbbbbbb bbb ccc ddddd");
375
		final MapDocument resB =
376
				result(config,
377
						"B",
378
						"qwert aaabbbbbbbb bbb ccc ddddd");
379

  
380
		final ScoreResult sr = new PaceDocumentDistance().between(resA, resB, config);
381
		final double d = sr.getScore();
382
		System.out.println(String.format(" d ---> %s", d));
383

  
384
		// assertTrue(d.getScore() == 0.0);
385
	}
386

  
387
	@Test
388
	public void testDistanceProdConf3() {
389

  
390
		final Config config = getResultProdConf();
391

  
392
		final List<String> authorsA = Lists.newArrayList("Bardi, Alessia", "Manghi, Paolo", "Artini, Michele", "a");
393
		final List<String> authorsB = Lists.newArrayList("Bardi Alessia", "Manghi Paolo", "Artini Michele");
394
		final List<String> pid = Lists.newArrayList();
395

  
396
		final MapDocument resA =
397
				result(config,
398
						"A",
399
						"qwerty aaabbbbbbbb bbb ccc ddddd", "2003", pid, authorsA);
400
		final MapDocument resB =
401
				result(config,
402
						"B",
403
						"qwert aaabbbbbbbb bbb ccc ddddd", "2003", pid, authorsB);
404

  
405
		final ScoreResult sr = new PaceDocumentDistance().between(resA, resB, config);
406
		final double d = sr.getScore();
407
		System.out.println(String.format(" d ---> %s", d));
408

  
409
		assertTrue(d == 0.0);
410
	}
411

  
412
	@Test
413
	public void testDistancePersonConf1() {
414

  
415
		final Config config = getPersonConf();
416

  
417
		final MapDocument p1 = person(config, "p1_id", getPersonGT("/eu/dnetlib/pace/model/gt.author.manghi1.fo.json"));
418
		final MapDocument p2 = person(config, "p2_id", getPersonGT("/eu/dnetlib/pace/model/gt.author.manghi2.fo.json"));
419

  
420
		final ScoreResult sr = new PaceDocumentDistance().between(p1, p2, config);
421
		final double d = sr.getScore();
422
		System.out.println(String.format(" d ---> %s", d));
423

  
424
		// assertTrue(d.getScore() == 0.0);
425
	}
426

  
427
}
modules/dnet-graph-domain/trunk/src/test/java/eu/dnetlib/data/mapreduce/util/DNGFDecoderTest.java
1
package eu.dnetlib.data.mapreduce.util;
2

  
3
import static org.junit.Assert.assertFalse;
4
import static org.junit.Assert.assertNotNull;
5

  
6
import java.util.List;
7

  
8
import org.junit.Test;
9

  
10
import eu.dnetlib.data.proto.KindProtos.Kind;
11

  
12
public class DNGFDecoderTest {
13

  
14
	@Test
15
	public void testAsXml() {
16

  
17
		final DNGFDecoder decoder = DNGFTest.embed(DNGFTest.getResult("50|id_1"), Kind.entity);
18

  
19
		assertNotNull(decoder);
20

  
21
		assertNotNull(decoder.asXml());
22

  
23
		System.out.println(decoder.asXml());
24

  
25
	}
26

  
27
	@Test
28
	public void testGetFieldValues() {
29
		final DNGFDecoder decoder = DNGFTest.embed(DNGFTest.getResult("50|id_1"), Kind.entity);
30

  
31
		final String path = "publication/metadata/title/value";
32
		final List<String> titles = decoder.decodeEntity().getFieldValues(path);
33

  
34
		assertNotNull(titles);
35
		assertFalse(titles.isEmpty());
36
	}
37
}
modules/dnet-graph-domain/trunk/src/test/java/eu/dnetlib/data/mapreduce/util/DNGFRowKeyDecoderTest.java
1
package eu.dnetlib.data.mapreduce.util;
2

  
3
import org.junit.Test;
4

  
5
public class DNGFRowKeyDecoderTest {
6

  
7
	@Test
8
	public void test() {
9

  
10
		String id1 = "50|acnbad______::0a454baf9c61e63d42fb83ab549f8062";
11

  
12
		DNGFRowKeyDecoder d = DNGFRowKeyDecoder.decode(id1);
13

  
14
		System.out.println(d.getId());
15
	}
16

  
17
}
modules/dnet-graph-domain/trunk/src/test/java/eu/dnetlib/data/mapreduce/util/DNGFRelDecoderTest.java
1
package eu.dnetlib.data.mapreduce.util;
2

  
3
import com.google.protobuf.Descriptors.FieldDescriptor;
4
import eu.dnetlib.data.proto.DNGFProtos.DNGFRel;
5
import eu.dnetlib.data.proto.RelTypeProtos.RelType;
6
import eu.dnetlib.data.proto.RelTypeProtos.SubRelType;
7
import eu.dnetlib.data.proto.SubRelProtos.Authorship;
8
import org.junit.Before;
9
import org.junit.Test;
10

  
11
import static org.junit.Assert.assertEquals;
12
import static org.junit.Assert.assertNotNull;
13

  
14
public class DNGFRelDecoderTest {
15

  
16
	private DNGFRel dngfRel;
17

  
18
	@Before
19
	public void setUp() {
20
		dngfRel = DNGFTest.getPersonPublication("ID_1", "ID_2", "1", "isAuthor");
21
	}
22

  
23
	@Test
24
	public void testSetClass() {
25

  
26
		DNGFRelDecoder d1 = DNGFRelDecoder.decode(dngfRel);
27

  
28
		assertNotNull(d1);
29
		assertEquals("isAuthor", d1.getRelClass());
30

  
31
		DNGFRelDecoder d2 = DNGFRelDecoder.decode(d1.setClassId("hasAuthor").build());
32

  
33
		assertEquals("hasAuthor", d2.getRelClass());
34
		assertEquals("hasAuthor", d2.getRelMetadata().getSemantics().getClassid());
35
		assertEquals("hasAuthor", d2.getRelMetadata().getSemantics().getClassname());
36

  
37
		FieldDescriptor fd = Authorship.getDescriptor().findFieldByName("ranking");
38
		assertEquals(d1.getSubRel().getField(fd), d2.getSubRel().getField(fd));
39
	}
40

  
41
	@Test
42
	public void testGetCF() {
43
		assertEquals("personPublication_authorship_isAuthorOf", DNGFRelDecoder.getCFQ(RelType.personPublication, SubRelType.authorship, Authorship.RelName.isAuthorOf));
44
		assertEquals("personPublication_authorship_isAuthorOf", DNGFRelDecoder.getCFQ(RelType.personPublication, SubRelType.authorship, "isAuthorOf"));
45
	}
46

  
47
}
modules/dnet-graph-domain/trunk/src/test/java/eu/dnetlib/data/actionmanager/actions/ActionFactoryTest.java
1
package eu.dnetlib.data.actionmanager.actions;
2

  
3
import java.io.IOException;
4
import java.io.InputStream;
5
import java.io.StringReader;
6
import java.io.StringWriter;
7
import java.util.Arrays;
8
import java.util.HashMap;
9
import java.util.List;
10
import java.util.Map;
11
import javax.xml.transform.TransformerException;
12

  
13
import eu.dnetlib.data.proto.DNGFProtos.DNGF;
14
import eu.dnetlib.rmi.data.hadoop.actionmanager.ActionManagerException;
15
import eu.dnetlib.rmi.data.hadoop.actionmanager.Agent;
16
import eu.dnetlib.rmi.data.hadoop.actionmanager.Operation;
17
import eu.dnetlib.rmi.data.hadoop.actionmanager.Provenance;
18
import eu.dnetlib.rmi.data.hadoop.actionmanager.actions.ActionFactory;
19
import eu.dnetlib.rmi.data.hadoop.actionmanager.actions.AtomicAction;
20
import eu.dnetlib.rmi.data.hadoop.actionmanager.actions.XsltInfoPackageAction;
21
import org.apache.commons.io.IOUtils;
22
import org.apache.commons.logging.Log;
23
import org.apache.commons.logging.LogFactory;
24
import org.dom4j.Document;
25
import org.dom4j.DocumentException;
26
import org.dom4j.io.SAXReader;
27
import org.junit.Before;
28
import org.junit.Test;
29
import org.junit.runner.RunWith;
30
import org.mockito.Mock;
31
import org.mockito.Mockito;
32
import org.mockito.runners.MockitoJUnitRunner;
33
import org.springframework.core.io.Resource;
34

  
35
import static org.junit.Assert.*;
36

  
37
@RunWith(MockitoJUnitRunner.class)
38
public class ActionFactoryTest {
39

  
40
	private static final Log log = LogFactory.getLog(ActionFactoryTest.class);
41
	private static String basePathProfiles = "/eu/dnetlib/bootstrap/profiles/TransformationRuleDSResources/TransformationRuleDSResourceType/";
42
	private final static Agent agent = new Agent("agentId", "agentName", Agent.AGENT_TYPE.algo);
43
	private final static String trust = "0.9";
44
	private final InputStream recordOdfInputStream = getClass().getResourceAsStream("recordOdf.xml");
45
	private final InputStream recordOafInputStream = getClass().getResourceAsStream("recordOaf.xml");
46

  
47
	private ActionFactory actionFactory;
48
	private Map<String, Resource> xslts = new HashMap<>();
49

  
50
	@Mock
51
	private Resource oaf2insertActions;
52
	@Mock
53
	private Resource oaf2updateActions;
54
	@Mock
55
	private Resource odf2insertActions;
56
	@Mock
57
	private Resource odf2updateActions;
58
	@Mock
59
	private Resource rels2actions;
60

  
61
	@Before
62
	public void setUp() throws Exception {
63
		actionFactory = new ActionFactory();
64

  
65
		xslts.put("oaf2insertActions", oaf2insertActions);
66
		xslts.put("oaf2updateActions", oaf2updateActions);
67
		xslts.put("odf2insertActions", odf2insertActions);
68
		xslts.put("odf2updateActions", odf2updateActions);
69
		xslts.put("rels2actions", rels2actions);
70

  
71
		Mockito.when(oaf2insertActions.getInputStream()).thenReturn(loadFromTransformationProfile("oaf2insertActions.xml"));
72
		Mockito.when(oaf2updateActions.getInputStream()).thenReturn(loadFromTransformationProfile("oaf2updateActions.xml"));
73
		Mockito.when(odf2insertActions.getInputStream()).thenReturn(loadFromTransformationProfile("odf2insertActions.xml"));
74
		Mockito.when(odf2updateActions.getInputStream()).thenReturn(loadFromTransformationProfile("odf2updateActions.xml"));
75
//		Mockito.when(rels2actions.getInputStream()).thenReturn(loadFromTransformationProfile("rels2actions.xml"));
76

  
77
		actionFactory.setXslts(xslts);
78
	}
79

  
80
	@Test
81
	public void testBeans() {
82
		assertNotNull(actionFactory);
83
		assertNotNull(actionFactory.getXslts());
84
		assertFalse(actionFactory.getXslts().isEmpty());
85
	}
86

  
87
	@Test
88
	public void testDataciteInsert() throws ActionManagerException, IOException, TransformerException, DocumentException {
89

  
90
		XsltInfoPackageAction action =
91
				actionFactory.generateInfoPackageAction("odf2insertActions", "rawSet", agent, Operation.INSERT, asString(recordOdfInputStream),
92
						Provenance.sysimport_crosswalk_datasetarchive, "datacite____", trust);
93

  
94
		checkActions(action, action.asAtomicActions());
95
	}
96

  
97
	@Test
98
	public void testDataciteUpdate() throws ActionManagerException, IOException, TransformerException, DocumentException {
99

  
100
		XsltInfoPackageAction action =
101
				actionFactory.generateInfoPackageAction("odf2updateActions", "rawSet", agent, Operation.UPDATE, asString(recordOdfInputStream),
102
						Provenance.sysimport_crosswalk_datasetarchive, "datacite____", trust);
103

  
104
		checkActions(action, action.asAtomicActions());
105
	}
106

  
107
	@Test
108
	public void testRecordOafInsert() throws ActionManagerException, IOException, TransformerException, DocumentException {
109

  
110
		XsltInfoPackageAction action =
111
				actionFactory.generateInfoPackageAction("oaf2insertActions", "rawSet", agent, Operation.INSERT, asString(recordOafInputStream),
112
						Provenance.sysimport_crosswalk_datasetarchive, "od_______296", trust);
113

  
114
		checkActions(action, action.asAtomicActions());
115
	}
116

  
117
	@Test
118
	public void testRecordOafUpdate() throws ActionManagerException, IOException, TransformerException, DocumentException {
119

  
120
		XsltInfoPackageAction action =
121
				actionFactory.generateInfoPackageAction("oaf2updateActions", "rawSet", agent, Operation.INSERT, asString(recordOafInputStream),
122
						Provenance.sysimport_crosswalk_datasetarchive, "od_______296", trust);
123
		checkActions(action, action.asAtomicActions());
124
	}
125

  
126
	private void checkActions(final XsltInfoPackageAction action, final List<AtomicAction> atomicActionList)
127
			throws TransformerException, DocumentException, com.google.protobuf.InvalidProtocolBufferException {
128
		for (AtomicAction a : action.calculateAtomicActions()) {
129
			assertNotNull(a.getTargetValue());
130

  
131
			String actionJSON = AtomicActionSerialiser.toJSON(a);
132

  
133
			log.info(actionJSON);
134

  
135
			final AtomicAction aa = AtomicActionDeserialiser.fromJSON(actionJSON);
136

  
137
			assertEquals(a.getRawSet(), aa.getRawSet());
138
			assertEquals(a.getTargetColumn(), aa.getTargetColumn());
139
			assertEquals(a.getTargetColumnFamily(), aa.getTargetColumnFamily());
140
			assertEquals(a.getTargetRowKey(), aa.getTargetRowKey());
141
			assertEquals(a.getActionType(), aa.getActionType());
142
			assertEquals(a.getRowKey(), aa.getRowKey());
143

  
144
			assertEquals(a.getAgent().getId(), aa.getAgent().getId());
145
			assertEquals(a.getAgent().getName(), aa.getAgent().getName());
146
			assertEquals(a.getAgent().getType(), aa.getAgent().getType());
147

  
148
			assertTrue(Arrays.equals(a.getTargetValue(), aa.getTargetValue()));
149

  
150
			System.out.println(DNGF.parseFrom(aa.getTargetValue()));
151
		}
152

  
153
		for (AtomicAction aa : atomicActionList) {
154
			assertNotNull(aa);
155
		}
156
		log.info("N. puts: " + atomicActionList.size());
157
	}
158

  
159
	private String asString(final InputStream i) throws IOException {
160
		StringWriter writer = new StringWriter();
161
		IOUtils.copy(i, writer);
162
		return writer.toString();
163
	}
164

  
165
	private InputStream loadFromTransformationProfile(final String profilePath) {
166
		log.info("Loading xslt from: " + basePathProfiles + profilePath);
167
		InputStream profile = getClass().getResourceAsStream(basePathProfiles + profilePath);
168
		final String s;
169
		try {
170
			s = IOUtils.toString(profile);
171
			log.debug("profile: " + s);
172
		} catch (IOException e) {
173
			e.printStackTrace();
174
			throw new RuntimeException(e);
175
		}
176

  
177
		final SAXReader saxReader = new SAXReader();
178
		Document doc = null;
179

  
180
		try {
181
			doc = saxReader.read(new StringReader(s));
182
		} catch (DocumentException e) {
183
			e.printStackTrace();
184
			throw new RuntimeException(e);
185
		}
186
		String xslt = doc.selectSingleNode("//SCRIPT/CODE/*[local-name()='stylesheet']").asXML();
187
		return IOUtils.toInputStream(xslt);
188
	}
189
}
modules/dnet-graph-domain/trunk/src/test/java/eu/dnetlib/data/transform/xml/OpenTrialsXsltFunctionsTest.java
1
package eu.dnetlib.data.transform.xml;
2

  
3
import java.util.List;
4

  
5
import eu.dnetlib.data.transform.xml.OpenTrialsXsltFunctions.JsonProv;
6
import org.junit.After;
7
import org.junit.Before;
8
import org.junit.Test;
9

  
10
import static org.junit.Assert.assertEquals;
11

  
12
/**
13
 * OpenTrialsXsltFunctions Tester.
14
 *
15
 */
16
public class OpenTrialsXsltFunctionsTest {
17

  
18
	private String jsonProv = "[{\"url\" : \"http://apps.who.int/trialsearch/Trial3.aspx?trialid=NCT00378508\", \"sourceID\" : \"77eb42c5-0ec7-4e31-963a-5736b66f2d26\", \"sourceName\" : \"ictrp\"},{\"url\" : \"https://www.clinicaltrials.gov/ct2/show/NCT00378508?lup_e=02%2F04%2F2016&lup_s=01%2F01%2F2001&rank=175075&resultsxml=true\", \"sourceID\" : \"b389497c-0833-432b-a09b-930526b7b4d4\", \"sourceName\" : \"nct\"}]";
19
	private String jsonProvWithNull = "[{\"url\" : \"\", \"sourceID\" : \"77eb42c5-0ec7-4e31-963a-5736b66f2d26\", \"sourceName\" : \"ictrp\"},{\"url\" : \"https://www.clinicaltrials.gov/ct2/show/NCT00378508?lup_e=02%2F04%2F2016&lup_s=01%2F01%2F2001&rank=175075&resultsxml=true\", \"sourceID\" : \"b389497c-0833-432b-a09b-930526b7b4d4\", \"sourceName\" : \"nct\"}]";
20
	private String jidentifiers = "{112683,NCT00920439}";
21

  
22
	@Before
23
	public void before() throws Exception {
24
	}
25

  
26
	@After
27
	public void after() throws Exception {
28
	}
29

  
30
	/**
31
	 * Method: getProvs(String jsonProvList)
32
	 */
33
	@Test
34
	public void testGetProvs() throws Exception {
35
		List<JsonProv> list = OpenTrialsXsltFunctions.getProvs(jsonProv);
36
		assertEquals(2, list.size());
37
	}
38

  
39
	/**
40
	 * Method: getMainIdentifierURL(String jsonProvList)
41
	 */
42
	@Test
43
	public void testGetMainIdentifierURL() throws Exception {
44
		String url = OpenTrialsXsltFunctions.getMainIdentifierURL(jsonProv);
45
		assertEquals( "http://apps.who.int/trialsearch/Trial3.aspx?trialid=NCT00378508", url );
46
		url = OpenTrialsXsltFunctions.getMainIdentifierURL(jsonProvWithNull);
47
		assertEquals("https://www.clinicaltrials.gov/ct2/show/NCT00378508?lup_e=02%2F04%2F2016&lup_s=01%2F01%2F2001&rank=175075&resultsxml=true", url);
48
	}
49

  
50

  
51

  
52
} 
modules/dnet-graph-domain/trunk/src/test/java/eu/dnetlib/data/transform/SolrProtoMapperTest.java
1
package eu.dnetlib.data.transform;
2

  
3
import java.io.IOException;
4
import java.io.StringWriter;
5
import java.text.ParseException;
6
import java.text.SimpleDateFormat;
7
import java.util.Arrays;
8
import java.util.List;
9

  
10
import com.google.protobuf.InvalidProtocolBufferException;
11
import com.googlecode.protobuf.format.JsonFormat;
12
import eu.dnetlib.data.mapreduce.util.DNGFTest;
13
import eu.dnetlib.data.proto.DNGFProtos.DNGF;
14
import eu.dnetlib.data.proto.DNGFProtos.DNGFEntity;
15
import eu.dnetlib.data.proto.KindProtos.Kind;
16
import org.apache.commons.codec.binary.Base64;
17
import org.apache.commons.io.IOUtils;
18
import org.apache.commons.logging.Log;
19
import org.apache.commons.logging.LogFactory;
20
import org.apache.solr.common.SolrInputDocument;
21
import org.apache.solr.common.SolrInputField;
22
import org.dom4j.DocumentException;
23
import org.junit.Before;
24
import org.junit.Test;
25

  
26
import static org.junit.Assert.assertFalse;
27
import static org.junit.Assert.assertNotNull;
28

  
29
public class SolrProtoMapperTest {
30

  
31
	private static final Log log = LogFactory.getLog(SolrProtoMapper.class); // NOPMD by marko on 11/24/08 5:02 PM
32

  
33
	private static final String outFormat = new String("yyyy-MM-dd'T'hh:mm:ss'Z'");
34

  
35
	private final static List<String> dateFormats = Arrays.asList("yyyy-MM-dd'T'hh:mm:ss", "yyyy-MM-dd", "dd-MM-yyyy", "dd/MM/yyyy", "yyyy");
36

  
37
	private String fields;
38

  
39
	@Before
40
	public void setUp() throws IOException {
41
		final StringWriter sw = new StringWriter();
42
		IOUtils.copy(getClass().getResourceAsStream("fields.xml"), sw);
43
		fields = sw.toString();
44
		assertNotNull(fields);
45
		assertFalse(fields.isEmpty());
46

  
47
		log.info(fields);
48
	}
49

  
50
	@Test
51
	public void testProto2SolrDocument() throws DocumentException, InvalidProtocolBufferException {
52
		final SolrProtoMapper mapper = new SolrProtoMapper(fields);
53

  
54
		assertNotNull(mapper);
55

  
56
		final DNGFEntity.Builder entity = DNGFTest.getResultBuilder("01");
57
		entity.addChildren(DNGFTest.getResultBuilder("01_children"));
58

  
59
		final DNGF oaf = DNGFTest.embed(entity.build(), Kind.entity).getDNGF();
60

  
61
		assertNotNull(oaf.getEntity().getChildrenList());
62
		assertFalse(oaf.getEntity().getChildrenList().isEmpty());
63

  
64
		log.info("byte[] size: " + oaf.toByteArray().length);
65

  
66
		log.info("json size:   " + JsonFormat.printToString(oaf).length());
67

  
68
		log.info("base64 size: " + Base64.encodeBase64String(oaf.toByteArray()).length());
69

  
70
		final byte[] decodeBase64 = Base64.decodeBase64(Base64.encodeBase64String(oaf.toByteArray()));
71

  
72
		log.info("decoded: " + JsonFormat.printToString(DNGF.parseFrom(decodeBase64)));
73

  
74
		final SolrInputDocument doc = mapper.map(oaf, getParsedDateField("2015-02-15"), "asd", "action-set");
75

  
76
		assertNotNull(doc);
77

  
78
		for (final SolrInputField f : doc.values()) {
79
			log.info(f);
80
		}
81
	}
82

  
83

  
84
	/**
85
	 * method return a solr-compatible string representation of a date
86
	 *
87
	 * @param date
88
	 * @return
89
	 * @throws DocumentException
90
	 * @throws ParseException
91
	 */
92
	public String getParsedDateField(final String date) {
93
		for (String formatString : dateFormats) {
94
			try {
95
				return new SimpleDateFormat(outFormat).format(new SimpleDateFormat(formatString).parse(date));
96
			} catch (ParseException e) {}
97
		}
98
		throw new IllegalStateException("unable to parse date: " + date);
99
	}
100
}
modules/dnet-graph-domain/trunk/src/test/resources/META-inf.services/javax.xml.transform.TransformerFactory
1
net.sf.saxon.TransformerFactoryImpl
modules/dnet-graph-domain/trunk/src/test/resources/eu/dnetlib/pace/organization.pace.conf
1
{ 
2
	"wf" : { 
3
        "threshold" : "0.99", 
4
        "run" : "001", 
5
        "entityType" : "organization", 
6
        "orderField" : "title", 
7
        "queueMaxSize" : "2000",
8
        "groupMaxSize" : "10",
9
        "slidingWindowSize" : "200",
10
        "rootBuilder" : [ "organization" ],
11
        "includeChildren" : "true" 
12
    },
13
	"pace" : {		
14
  		"conditions" : [ ],		
15
		"model" : [
16
			{ "name" : "legalname", "algo" : "JaroWinkler", "type" : "String", "weight" : "0.6", "ignoreMissing" : "false", "path" : "organization/metadata/legalname/value" },
17
			{ "name" : "legalshortname", "algo" : "JaroWinkler", "type" : "String", "weight" : "0.4", "ignoreMissing" : "true", "path" : "organization/metadata/legalshortname/value" }
18
		],
19
		"blacklists" : { } 		
20
	}
21
}
modules/dnet-graph-domain/trunk/src/test/resources/eu/dnetlib/pace/model/gt.author.manghi1.json
1
{"id":"30|dedup_wf_001::e78059705c3885a10440c8021afbdd4a","author":{"frequency":6,"id":"30|od______2294::9897283f935d7c2f4c11cebf65ae3098","fullname":"Manghi, Paolo","firstname":"Paolo","secondnames":"Manghi"},"merged":[{"id":"30|od______2294::9897283f935d7c2f4c11cebf65ae3098","fullname":"Manghi, Paolo","firstname":"Paolo","secondnames":"Manghi"},{"id":"30|doaj10829873::6cff63f7eafbb51fd6a1c268f4f0227f","fullname":"Manghi, Paolo","firstname":"Paolo","secondnames":"Manghi"},{"id":"30|od______2367::9897283f935d7c2f4c11cebf65ae3098","fullname":"Manghi, Paolo","firstname":"Paolo","secondnames":"Manghi"},{"id":"30|doaj10829873::f67c45f3bd4e4e4c4942a373799e0457","fullname":"Manghi, Paolo","firstname":"Paolo","secondnames":"Manghi"},{"id":"30|doaj10829873::39a29e7c15e04cdef8aecaa062b4f000","fullname":"Manghi, Paolo","firstname":"Paolo","secondnames":"Manghi"},{"id":"30|doaj10829873::f9b4de41343d956271d88f93ba68c31d","fullname":"Manghi, Paolo","firstname":"Paolo","secondnames":"Manghi"}],"coAuthors":[{"anchorId":"30|dedup_wf_001::73aac4e0ca21747def81773cdf242152","id":"30|od______2367::069aab4b3defa55d5fb573838e54ed10","fullname":"Werf, Titia","firstname":"Titia","secondnames":"Werf"},{"anchorId":"30|dedup_wf_001::cd493693f2e04159d419cfbea6042944","id":"30|doaj10829873::0acf7cdc45040bd02482b94760af9db5","fullname":"Smith, Tim","firstname":"Tim","secondnames":"Smith"},{"anchorId":"30|dedup_wf_001::4867c41ae4006a89a4e00fa5b2ace526","id":"30|od______2294::717184cb6436add31e3ce0ba86ba2476","fullname":"Katifori, Akrivi","firstname":"Akrivi","secondnames":"Katifori"},{"anchorId":"30|dedup_wf_001::d17df318b8ab8b17ac2b016767e183b4","id":"30|od______2367::d24f772460583eb514d0465f77f15030","fullname":"Rettberg, Najla","firstname":"Najla","secondnames":"Rettberg"},{"anchorId":"30|dedup_wf_001::ce0c9316f1d270fe7c021ac010378189","id":"30|od______2367::ef2914f870d83e32764f2e0db122d0c4","fullname":"Houssos, Nikos","firstname":"Nikos","secondnames":"Houssos"},{"anchorId":"30|dedup_wf_001::ce0c9316f1d270fe7c021ac010378189","id":"30|od______2294::ef2914f870d83e32764f2e0db122d0c4","fullname":"Houssos, Nikos","firstname":"Nikos","secondnames":"Houssos"},{"anchorId":"30|dedup_wf_001::271f098792b54069a4d77b4fee16b354","id":"30|od______2294::217bb36de851aacdeae92250959e5af9","fullname":"Schmidt, Birgit","firstname":"Birgit","secondnames":"Schmidt"},{"anchorId":"30|dedup_wf_001::19651c25c06f8ddbf8fb582efa51bb10","id":"30|od______2367::c48a8036130fc6f9a73348ba3be40041","fullname":"Biagini, Federico","firstname":"Federico","secondnames":"Biagini"},{"anchorId":"30|dedup_wf_001::49e6185992465c4473a19d74aaf0c774","id":"30|od______2367::44afefb40235eadaa9424f735dc569ad","fullname":"Schirrwagen, Jochen","firstname":"Jochen","secondnames":"Schirrwagen"},{"anchorId":"30|dedup_wf_001::21bff9fc229ffae537509689a3eb2bd1","id":"30|doaj10829873::269dbf736b973d298160217072f127bd","fullname":"Candela, Leonardo","firstname":"Leonardo","secondnames":"Candela"},{"anchorId":"30|dedup_wf_001::84b80c9fc38b022ae4e4a5c25ffa7999","id":"30|od______2367::a93eb6a6cbfce5bcdf86cb743f788077","fullname":"Castelli, Donatella","firstname":"Donatella","secondnames":"Castelli"},{"anchorId":"30|dedup_wf_001::731b5090d3f9c6dac58ad770b1a29e13","id":"30|doaj10829873::c6cc48d8aa310a1d2c87f5df7c5576bb","fullname":"Bardi, Alessia","firstname":"Alessia","secondnames":"Bardi"},{"anchorId":"30|dedup_wf_001::5a835806fb58a8199640d0b54de6b70a","id":"30|od______2367::9c743b25e78b06608d4214ba18f92690","fullname":"Bolikowski, Lukasz","firstname":"Lukasz","secondnames":"Bolikowski"},{"anchorId":"30|dedup_wf_001::d71c73319eda487f9b56e860e2c1794f","id":"30|od______2367::c11bdd64efcd19316ef10c1967392565","fullname":"Peters, Dale","firstname":"Dale","secondnames":"Peters"},{"anchorId":"30|dedup_wf_001::2c561a4cbd689f4729324744fb046995","id":"30|doaj10829873::80724b7b737d6c51b3733eaf9da4b605","fullname":"Mikulicic, Marko","firstname":"Marko","secondnames":"Mikulicic"},{"anchorId":"30|dedup_wf_001::cd493693f2e04159d419cfbea6042944","id":"30|od______2367::b340050a287b2601d330547261fe82bc","fullname":"Smith, Tim","firstname":"Tim","secondnames":"Smith"},{"anchorId":"30|dedup_wf_001::49e6185992465c4473a19d74aaf0c774","id":"30|od______2294::44afefb40235eadaa9424f735dc569ad","fullname":"Schirrwagen, Jochen","firstname":"Jochen","secondnames":"Schirrwagen"},{"anchorId":"30|dedup_wf_001::f41b3d7b95be894f9bd7a30b08f50313","id":"30|od______2294::45f6127ede0d24d16a5007ceff0a2d4b","fullname":"Horstmann, Wolfram","firstname":"Wolfram","secondnames":"Horstmann"},{"anchorId":"30|dedup_wf_001::75d72e914bd4d88674bd2a99a01c9f19","id":"30|od______2367::08fc98b1a1e2e2de97e3ecdd1b8174d0","fullname":"Pagano, Pasquale","firstname":"Pasquale","secondnames":"Pagano"},{"anchorId":"30|dedup_wf_001::30530ec3554a58bf9eaa0c497b9c83e5","id":"30|od______2367::c68257b7b29d6c1b372856f371e3ba24","fullname":"Manola, Natalia","firstname":"Natalia","secondnames":"Manola"},{"anchorId":"30|dedup_wf_001::21bff9fc229ffae537509689a3eb2bd1","id":"30|od______2367::8fd116733ee055e8bee96e422b4142ca","fullname":"Candela, Leonardo","firstname":"Leonardo","secondnames":"Candela"},{"anchorId":"30|dedup_wf_001::4867c41ae4006a89a4e00fa5b2ace526","id":"30|od______2367::717184cb6436add31e3ce0ba86ba2476","fullname":"Katifori, Akrivi","firstname":"Akrivi","secondnames":"Katifori"},{"anchorId":"30|dedup_wf_001::2c561a4cbd689f4729324744fb046995","id":"30|od______2367::fe0e336ba013e433486e92b8e30435c1","fullname":"Mikulicic, Marko","firstname":"Marko","secondnames":"Mikulicic"},{"anchorId":"30|dedup_wf_001::21bff9fc229ffae537509689a3eb2bd1","id":"30|od______2294::8fd116733ee055e8bee96e422b4142ca","fullname":"Candela, Leonardo","firstname":"Leonardo","secondnames":"Candela"},{"anchorId":"30|dedup_wf_001::ef5fbc9697bc7bf23f9cedc92f855466","id":"30|od______2367::7aab6e55da61a2f412b9764e3554154a","fullname":"Assante, Massimiliano","firstname":"Massimiliano","secondnames":"Assante"},{"anchorId":"30|dedup_wf_001::49e6185992465c4473a19d74aaf0c774","id":"30|doaj10829873::6bb80887219a5ea64915d84d373e3eb5","fullname":"Schirrwagen, Jochen","firstname":"Jochen","secondnames":"Schirrwagen"},{"anchorId":"30|dedup_wf_001::ca57380f88fb4920d67e024c0af0c715","id":"30|od______2294::2ca703acc4dd66064135c1afc5e976b8","fullname":"Horst, Marek","firstname":"Marek","secondnames":"Horst"},{"anchorId":"30|dedup_wf_001::2317e62318581e89976523d2553977e2","id":"30|od______2367::545b78ed508339ab728beee05f312db1","fullname":"Zoppi, Franco","firstname":"Franco","secondnames":"Zoppi"},{"anchorId":"30|dedup_wf_001::152c124f2f79b57d16500a3b8a63b93c","id":"30|od______2367::ee0556ce5974761280b8be0812a586b3","fullname":"Bolikowski, Å<U+0081>ukasz","firstname":"Å<U+0081>ukasz","secondnames":"Bolikowski"},{"anchorId":"30|dedup_wf_001::84b80c9fc38b022ae4e4a5c25ffa7999","id":"30|doaj10829873::a3c59fe161823ef7fadbd1bb216c34bb","fullname":"Castelli, Donatella","firstname":"Donatella","secondnames":"Castelli"},{"anchorId":"30|dedup_wf_001::731b5090d3f9c6dac58ad770b1a29e13","id":"30|od______2367::3fbd0b3533bd0e6089c1fe68b115f772","fullname":"Bardi, Alessia","firstname":"Alessia","secondnames":"Bardi"},{"anchorId":"30|dedup_wf_001::75d72e914bd4d88674bd2a99a01c9f19","id":"30|doaj10829873::9e7037bbf8b59564442aa12b6b424747","fullname":"Pagano, Pasquale","firstname":"Pasquale","secondnames":"Pagano"},{"anchorId":"30|dedup_wf_001::eacced7c9132e343948bf51698a1c927","id":"30|od______2367::22272e3e38161be671abad3f27c68e36","fullname":"Mikulic, Marko","firstname":"Marko","secondnames":"Mikulic"},{"anchorId":"30|dedup_wf_001::30530ec3554a58bf9eaa0c497b9c83e5","id":"30|od______2294::c68257b7b29d6c1b372856f371e3ba24","fullname":"Manola, Natalia","firstname":"Natalia","secondnames":"Manola"},{"anchorId":"30|dedup_wf_001::f41b3d7b95be894f9bd7a30b08f50313","id":"30|od______2367::45f6127ede0d24d16a5007ceff0a2d4b","fullname":"Horstmann, Wolfram","firstname":"Wolfram","secondnames":"Horstmann"},{"anchorId":"30|dedup_wf_001::ca57380f88fb4920d67e024c0af0c715","id":"30|od______2367::2ca703acc4dd66064135c1afc5e976b8","fullname":"Horst, Marek","firstname":"Marek","secondnames":"Horst"},{"anchorId":"30|dedup_wf_001::7b1fe51141418a62b56f9c3bd5bccaa7","id":"30|od______2367::2638f44b18089930e67bbd5633f9b103","fullname":"Debole, Franca","firstname":"Franca","secondnames":"Debole"},{"anchorId":"30|dedup_wf_001::d17df318b8ab8b17ac2b016767e183b4","id":"30|od______2294::d24f772460583eb514d0465f77f15030","fullname":"Rettberg, Najla","firstname":"Najla","secondnames":"Rettberg"},{"anchorId":"30|dedup_wf_001::75d72e914bd4d88674bd2a99a01c9f19","id":"30|doaj10829873::b3795485a89b87aabeff16b81f2ff24d","fullname":"Pagano, Pasquale","firstname":"Pasquale","secondnames":"Pagano"},{"anchorId":"30|dedup_wf_001::d71c73319eda487f9b56e860e2c1794f","id":"30|od______2294::c11bdd64efcd19316ef10c1967392565","fullname":"Peters, Dale","firstname":"Dale","secondnames":"Peters"},{"anchorId":"30|dedup_wf_001::9bfaee15b25e210ab56dfa6f57c6417e","id":"30|od______2367::81d934153eb100552ef4b398e243dd45","fullname":"La Bruzzo, Sandro","firstname":"Sandro","secondnames":"La Bruzzo"},{"anchorId":"30|dedup_wf_001::5a835806fb58a8199640d0b54de6b70a","id":"30|doaj10829873::2abbf092ab99aaaf0a52969141fc0070","fullname":"Bolikowski, Lukasz","firstname":"Lukasz","secondnames":"Bolikowski"},{"anchorId":"30|dedup_wf_001::cd493693f2e04159d419cfbea6042944","id":"30|od______2294::b340050a287b2601d330547261fe82bc","fullname":"Smith, Tim","firstname":"Tim","secondnames":"Smith"},{"anchorId":"30|dedup_wf_001::2d413333206599ee864738c521dbe5b3","id":"30|od______2367::39c67e010b85a6a79e54e94b2a789221","fullname":"Savino, Pasquale","firstname":"Pasquale","secondnames":"Savino"},{"anchorId":"30|dedup_wf_001::21bff9fc229ffae537509689a3eb2bd1","id":"30|doaj10829873::515b938f185f85e1a91849337310c4b7","fullname":"Candela, Leonardo","firstname":"Leonardo","secondnames":"Candela"},{"anchorId":"30|dedup_wf_001::c4d99fedf82781b5cae2225cf8049426","id":"30|od______2294::e931b1326351ef5b3bb2b89f3fc4244c","fullname":"Kobos, Mateusz","firstname":"Mateusz","secondnames":"Kobos"},{"anchorId":"30|dedup_wf_001::30530ec3554a58bf9eaa0c497b9c83e5","id":"30|doaj10829873::d4df586c008bca6df713f84070d3e1c3","fullname":"Manola, Natalia","firstname":"Natalia","secondnames":"Manola"},{"anchorId":"30|dedup_wf_001::152c124f2f79b57d16500a3b8a63b93c","id":"30|od______2294::029cfdbbd0fcb888f4efbfe1dde81721","fullname":"Bolikowski, Łukasz","firstname":"Łukasz","secondnames":"Bolikowski"},{"anchorId":"30|dedup_wf_001::7b9bd8e96778de90c911e0fcc8821bcc","id":"30|od______2367::c96e9db5145834320c37332ef96802f6","fullname":"Artini, Michele","firstname":"Michele","secondnames":"Artini"},{"anchorId":"30|dedup_wf_001::5a835806fb58a8199640d0b54de6b70a","id":"30|od______2294::9c743b25e78b06608d4214ba18f92690","fullname":"Bolikowski, Lukasz","firstname":"Lukasz","secondnames":"Bolikowski"},{"anchorId":"30|dedup_wf_001::84b80c9fc38b022ae4e4a5c25ffa7999","id":"30|doaj10829873::347ee2414e420e4aec5395146956d8c0","fullname":"Castelli, Donatella","firstname":"Donatella","secondnames":"Castelli"},{"anchorId":"30|dedup_wf_001::5850f94defb717ab4e7be63e6d4d2d12","id":"30|od______2367::de34cde81e9e864703f58d615ea0cf69","fullname":"Siebinga, Sjoerd","firstname":"Sjoerd","secondnames":"Siebinga"},{"anchorId":"30|dedup_wf_001::271f098792b54069a4d77b4fee16b354","id":"30|od______2367::217bb36de851aacdeae92250959e5af9","fullname":"Schmidt, Birgit","firstname":"Birgit","secondnames":"Schmidt"},{"anchorId":"30|dedup_wf_001::ca57ee88d3a6d5e2908b09c5aae07f97","id":"30|od______2367::ddd745ebf411904db3cd353539f6e079","fullname":"Mieldijk, Mario","firstname":"Mario","secondnames":"Mieldijk"},{"anchorId":"30|dedup_wf_001::c4d99fedf82781b5cae2225cf8049426","id":"30|od______2367::e931b1326351ef5b3bb2b89f3fc4244c","fullname":"Kobos, Mateusz","firstname":"Mateusz","secondnames":"Kobos"}],"anchor":true}
modules/dnet-graph-domain/trunk/src/test/resources/eu/dnetlib/pace/model/gt.author.manghi2.json
1
{"id":"30|dedup_wf_001::9044d2ebdd6112d84e5ff279ae3d0a26","author":{"frequency":2,"id":"30|od______1457::9897283f935d7c2f4c11cebf65ae3098","fullname":"Manghi, Paolo","firstname":"Paolo","secondnames":"Manghi"},"merged":[{"id":"30|od______1457::9897283f935d7c2f4c11cebf65ae3098","fullname":"Manghi, Paolo","firstname":"Paolo","secondnames":"Manghi"},{"score":1.0,"id":"30|od_______307::9897283f935d7c2f4c11cebf65ae3098","fullname":"Manghi, Paolo","firstname":"Paolo","secondnames":"Manghi"}],"coAuthors":[{"anchorId":"30|dedup_wf_001::179d5e120c57d760e8847dedfa7bfb9b","id":"30|od_______307::e0c601b1613eec62abb99e2591168fba","fullname":"Rodrigues, Eloy","firstname":"Eloy","secondnames":"Rodrigues"},{"anchorId":"30|dedup_wf_001::951cb66881f278b74cb366add7f0ce0d","id":"30|od_______307::ef2914f870d83e32764f2e0db122d0c4","fullname":"Houssos, Nikos","firstname":"Nikos","secondnames":"Houssos"},{"anchorId":"30|dedup_wf_001::958d36ee987d35f7d0a4f74a7ad10680","id":"30|od______1457::980daed35d7008f6f4de325f235fde65","fullname":"Príncipe, Pedro","firstname":"Pedro","secondnames":"Príncipe"},{"anchorId":"30|dedup_wf_001::4fe9f7dd4a96f983dcc8f17436238ba6","id":"30|od_______307::ae2f5173f1f1745e8521107ffd9e37ae","fullname":"Dvořák, Jan","firstname":"Jan","secondnames":"Dvořák"},{"anchorId":"30|dedup_wf_001::d09e46b26192d335be7aef7ddcbc9c0c","id":"30|od_______307::56bbbdcfbdda05ec257fabc0c7a596cc","fullname":"Elbæk, Mikael Karstensen","firstname":"Mikael Karstensen","secondnames":"Elbæk"},{"anchorId":"30|dedup_wf_001::d09e46b26192d335be7aef7ddcbc9c0c","id":"30|od______1457::56bbbdcfbdda05ec257fabc0c7a596cc","fullname":"Elbæk, Mikael Karstensen","firstname":"Mikael Karstensen","secondnames":"Elbæk"},{"anchorId":"30|dedup_wf_001::958d36ee987d35f7d0a4f74a7ad10680","id":"30|od_______307::980daed35d7008f6f4de325f235fde65","fullname":"Príncipe, Pedro","firstname":"Pedro","secondnames":"Príncipe"},{"anchorId":"30|dedup_wf_001::29611ace913f53e57c9201010b24434b","id":"30|od______1457::99d2bbd6eb21de2603f2d355875fe7b2","fullname":"Jörg, Brigitte","firstname":"Brigitte","secondnames":"Jörg"},{"anchorId":"30|dedup_wf_001::951cb66881f278b74cb366add7f0ce0d","id":"30|od______1457::ef2914f870d83e32764f2e0db122d0c4","fullname":"Houssos, Nikos","firstname":"Nikos","secondnames":"Houssos"},{"anchorId":"30|dedup_wf_001::29611ace913f53e57c9201010b24434b","id":"30|od_______307::99d2bbd6eb21de2603f2d355875fe7b2","fullname":"Jörg, Brigitte","firstname":"Brigitte","secondnames":"Jörg"},{"anchorId":"30|dedup_wf_001::179d5e120c57d760e8847dedfa7bfb9b","id":"30|od______1457::e0c601b1613eec62abb99e2591168fba","fullname":"Rodrigues, Eloy","firstname":"Eloy","secondnames":"Rodrigues"},{"anchorId":"30|dedup_wf_001::4fe9f7dd4a96f983dcc8f17436238ba6","id":"30|od______1457::ae2f5173f1f1745e8521107ffd9e37ae","fullname":"Dvořák, Jan","firstname":"Jan","secondnames":"Dvořák"}],"anchor":true}
modules/dnet-graph-domain/trunk/src/test/resources/eu/dnetlib/pace/model/gt.author.manghi1.fo.json
1
{
2
  "id": "30|dedup_wf_001::e78059705c3885a10440c8021afbdd4a",
3
  "author": {
4
    "frequency": 6,
5
    "id": "30|od______2294::9897283f935d7c2f4c11cebf65ae3098",
6
    "fullname": "Manghi, Paolo",
7
    "firstname": "Paolo",
8
    "secondnames": "Manghi"
9
  },
10
  "merged": [
11
    {
12
      "id": "30|od______2294::9897283f935d7c2f4c11cebf65ae3098",
13
      "fullname": "Manghi, Paolo",
14
      "firstname": "Paolo",
15
      "secondnames": "Manghi"
16
    },
17
    {
18
      "id": "30|doaj10829873::6cff63f7eafbb51fd6a1c268f4f0227f",
19
      "fullname": "Manghi, Paolo",
20
      "firstname": "Paolo",
21
      "secondnames": "Manghi"
22
    },
23
    {
24
      "id": "30|od______2367::9897283f935d7c2f4c11cebf65ae3098",
25
      "fullname": "Manghi, Paolo",
26
      "firstname": "Paolo",
27
      "secondnames": "Manghi"
28
    },
29
    {
30
      "id": "30|doaj10829873::f67c45f3bd4e4e4c4942a373799e0457",
31
      "fullname": "Manghi, Paolo",
32
      "firstname": "Paolo",
33
      "secondnames": "Manghi"
34
    },
35
    {
36
      "id": "30|doaj10829873::39a29e7c15e04cdef8aecaa062b4f000",
37
      "fullname": "Manghi, Paolo",
38
      "firstname": "Paolo",
39
      "secondnames": "Manghi"
40
    },
41
    {
42
      "id": "30|doaj10829873::f9b4de41343d956271d88f93ba68c31d",
43
      "fullname": "Manghi, Paolo",
44
      "firstname": "Paolo",
45
      "secondnames": "Manghi"
46
    }
47
  ],
48
  "coAuthors": [
49
    {
50
      "anchorId": "30|dedup_wf_001::179d5e120c57d760e8847dedfa7bfb9b",
51
      "id": "30|od_______307::e0c601b1613eec62abb99e2591168fba",
52
      "fullname": "Rodrigues, Eloy",
53
      "firstname": "Eloy",
54
      "secondnames": "Rodrigues"
55
    },
56
    {
57
      "anchorId": "30|dedup_wf_001::73aac4e0ca21747def81773cdf242152",
58
      "id": "30|od______2367::069aab4b3defa55d5fb573838e54ed10",
59
      "fullname": "Werf, Titia",
60
      "firstname": "Titia",
61
      "secondnames": "Werf"
62
    },
63
    {
64
      "anchorId": "30|dedup_wf_001::cd493693f2e04159d419cfbea6042944",
65
      "id": "30|doaj10829873::0acf7cdc45040bd02482b94760af9db5",
66
      "fullname": "Smith, Tim",
67
      "firstname": "Tim",
68
      "secondnames": "Smith"
69
    },
70
    {
71
      "anchorId": "30|dedup_wf_001::4867c41ae4006a89a4e00fa5b2ace526",
72
      "id": "30|od______2294::717184cb6436add31e3ce0ba86ba2476",
73
      "fullname": "Katifori, Akrivi",
74
      "firstname": "Akrivi",
75
      "secondnames": "Katifori"
76
    },
77
    {
78
      "anchorId": "30|dedup_wf_001::d17df318b8ab8b17ac2b016767e183b4",
79
      "id": "30|od______2367::d24f772460583eb514d0465f77f15030",
80
      "fullname": "Rettberg, Najla",
81
      "firstname": "Najla",
82
      "secondnames": "Rettberg"
83
    },
84
    {
85
      "anchorId": "30|dedup_wf_001::951cb66881f278b74cb366add7f0ce0d",
86
      "id": "30|od______2367::ef2914f870d83e32764f2e0db122d0c4",
87
      "fullname": "Houssos, Nikos",
88
      "firstname": "Nikos",
89
      "secondnames": "Houssos"
90
    },
91
    {
92
      "anchorId": "30|dedup_wf_001::ce0c9316f1d270fe7c021ac010378189",
93
      "id": "30|od______2294::ef2914f870d83e32764f2e0db122d0c4",
94
      "fullname": "Houssos, Nikos",
95
      "firstname": "Nikos",
96
      "secondnames": "Houssos"
97
    },
98
    {
99
      "anchorId": "30|dedup_wf_001::271f098792b54069a4d77b4fee16b354",
100
      "id": "30|od______2294::217bb36de851aacdeae92250959e5af9",
101
      "fullname": "Schmidt, Birgit",
102
      "firstname": "Birgit",
103
      "secondnames": "Schmidt"
104
    },
105
    {
106
      "anchorId": "30|dedup_wf_001::19651c25c06f8ddbf8fb582efa51bb10",
107
      "id": "30|od______2367::c48a8036130fc6f9a73348ba3be40041",
108
      "fullname": "Biagini, Federico",
109
      "firstname": "Federico",
110
      "secondnames": "Biagini"
111
    },
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff