Project

General

Profile

« Previous | Next » 

Revision deeccd97

Added by Andreas Kohlbecker over 8 years ago

better detection of synonyms to avoid adding the accepted taxon as its own synonym

View differences:

src/main/java/org/cybertaxonomy/utis/checklist/EEA_BDC_Client.java
303 303
                    .toList();
304 304
            for(Vertex tv : titleVs) {
305 305
                Source source = new Source();
306
                logger.error(tv.toString());
306
                logger.debug(tv.toString());
307 307
                source.setName(tv.getProperty(GraphSail.VALUE).toString());
308 308
                taxonBase.getSources().add(source);
309 309
            }
......
337 337
                    .inE(RdfSchema.EUNIS_SPECIES.property("eunisPrimaryName")).outV().dedup()
338 338
                    .toList();
339 339
            for(Vertex synonymV : synonymVs) {
340
                String typeUri = queryClient.relatedVertexValue(synonymV, RdfSchema.RDF, "type");
341
                String status = null;
342
                try {
343
                    status = URI.create(typeUri).getFragment();
344
                } catch (Exception e) {
340
                // http://www.w3.org/1999/02/22-rdf-syntax-ns#type is used inconsistently, accepted taxa can have type SpeciesSynonym
341
                // and are their own synonym in this case !
342
                // using http://eunis.eea.europa.eu/rdf/species-schema.rdf#taxonomicRank is the recommended way to detect synonyms and to avoid
343
                // adding the accepted taxon as its own synonym
344
                String taxonomicRank = queryClient.relatedVertexValue(synonymV, RdfSchema.EUNIS_SPECIES, "taxonomicRank");
345 345

  
346
                }
347 346

  
348
                if (status != null && status.equals("SpeciesSynonym")) {
347
                if (taxonomicRank != null && taxonomicRank.equals("Synonym")) {
349 348

  
350 349
                    Synonym synonym = new Synonym();
351 350

  
352 351
                    TaxonName taxonName = createTaxonName(synonymV);
353
                    synonym.setTaxonomicStatus(status);
352
                    synonym.setTaxonomicStatus(taxonomicRank);
353
                    synonym.setUrl(synonymV.getProperty(GraphSail.VALUE).toString());
354 354
                    synonym.setTaxonName(taxonName);
355 355
                    synonym.setAccordingTo(queryClient.relatedVertexValue(synonymV, RdfSchema.DWC, "nameAccordingToID"));
356 356

  
src/main/java/org/cybertaxonomy/utis/query/TinkerPopClient.java
59 59
 */
60 60
public class TinkerPopClient implements IQueryClient {
61 61

  
62
    protected Logger logger = LoggerFactory.getLogger(TinkerPopClient.class);
62
    protected static final Logger logger = LoggerFactory.getLogger(TinkerPopClient.class);
63 63

  
64 64
    private Neo4jStore graphStore = null;
65 65

  
src/test/java/org/cybertaxonomy/utis/checklist/EEA_BDC_ClientTest.java
6 6
import org.cybertaxonomy.utis.tnr.msg.Classification;
7 7
import org.cybertaxonomy.utis.tnr.msg.NameType;
8 8
import org.cybertaxonomy.utis.tnr.msg.Response;
9
import org.cybertaxonomy.utis.tnr.msg.Synonym;
9 10
import org.cybertaxonomy.utis.tnr.msg.TnrMsg;
10 11
import org.cybertaxonomy.utis.utils.TnrMsgException;
11 12
import org.cybertaxonomy.utis.utils.TnrMsgUtils;
12 13
import org.junit.BeforeClass;
13 14
import org.junit.Test;
15
import org.slf4j.Logger;
16
import org.slf4j.LoggerFactory;
14 17

  
15 18
public class EEA_BDC_ClientTest {
16 19

  
20
    protected static final Logger logger = LoggerFactory.getLogger(EEA_BDC_ClientTest.class);
21

  
17 22
    static EEA_BDC_Client client;
18 23

  
19 24
    @BeforeClass
......
48 53
        Response response = tnrMsg.getQuery().get(0).getResponse().get(0);
49 54
        assertEquals("Canis aureus", response.getMatchingNameString());
50 55
        assertEquals("Canis aureus", response.getTaxon().getTaxonName().getCanonicalName());
56
        logger.info("Accepted: " + response.getTaxon().getTaxonName().getFullName() + " (" + response.getTaxon().getUrl() + ")");
51 57
        assertTrue(response.getSynonym().size() > 0);
58
        for(Synonym syn : response.getSynonym()) {
59
            logger.info("Synonym: " + syn.getTaxonName().getFullName() + " (" + syn.getUrl() + ")");
60
        }
52 61
        Classification c = response.getTaxon().getClassification();
53 62
        assertEquals("Canidae", c.getFamily());
54 63
        assertEquals("Carnivora", c.getOrder());
......
56 65
        assertEquals("Animalia", c.getKingdom());
57 66
    }
58 67

  
68
    @Test
69
    public void scientificNameExact_withSynonym_Test() throws DRFChecklistException, TnrMsgException {
70

  
71
        TnrMsg tnrMsg = TnrMsgUtils.createRequest(SearchMode.scientificNameExact, "Prinobius myardi", true);
72
        client.queryChecklist(tnrMsg);
73
        String outputXML = TnrMsgUtils.convertTnrMsgToXML(tnrMsg);
74
        System.out.println(outputXML);
75
        assertEquals(1, tnrMsg.getQuery().get(0).getResponse().size());
76
        Response response = tnrMsg.getQuery().get(0).getResponse().get(0);
77
        assertEquals("Prinobius myardi", response.getMatchingNameString());
78
        assertEquals("Prinobius myardi", response.getTaxon().getTaxonName().getCanonicalName());
79
        assertTrue(response.getSynonym().size() > 0);
80
        boolean prionus_germari_found = false;
81
        for(Synonym syn : response.getSynonym()) {
82
            logger.info(syn.getTaxonName().getFullName());
83
            if(syn.getTaxonName().getCanonicalName().equals("Prionus germari")) {
84
                prionus_germari_found = true;
85
            }
86
        }
87
        assertTrue(prionus_germari_found);
88
        Classification c = response.getTaxon().getClassification();
89
    }
90

  
59 91
    @Test
60 92
    public void genus_Test() throws DRFChecklistException, TnrMsgException {
61 93

  

Also available in: Unified diff