Search in sources :

Example 1 with Specimen

use of org.eol.globi.domain.Specimen in project eol-globi-data by jhpoelen.

the class StudyImporterForJSONLD method importStudy.

@Override
public void importStudy() throws StudyImporterException {
    Model model;
    try {
        model = buildModel();
    } catch (IOException e) {
        throw new StudyImporterException("failed to import [" + getResourceURI() + "]", e);
    }
    Query query;
    try {
        query = QueryFactory.create(IOUtils.toString(new DatasetLocal().getResource("find-jsonld-interactions.rq"), CharsetConstant.UTF8));
    } catch (IOException e) {
        throw new StudyImporterException("failed to find sparql query", e);
    }
    QueryExecution exec = QueryExecutionFactory.create(query, model);
    try {
        ResultSet results = exec.execSelect();
        while (results.hasNext()) {
            QuerySolution solution = results.nextSolution();
            String subj = solution.get("subj").asResource().getURI();
            String creationDate = solution.get("creationDate").asLiteral().getString();
            String authorURI = solution.get("author").toString();
            String author;
            try {
                author = nodeFactory.getAuthorResolver().findFullName(authorURI);
            } catch (IOException e) {
                throw new StudyImporterException("failed to resolve author URI [" + authorURI + "]");
            }
            final String source1 = author + ". " + new DateTime(parseDate(creationDate)).getYear() + ". " + CitationUtil.createLastAccessedString(getResourceURI().toString());
            Study study = nodeFactory.getOrCreateStudy(new StudyImpl(getResourceURI() + subj, source1, null, subj));
            study.setExternalId(subj);
            Specimen source = createSpecimen(solution, study, "subjTaxon");
            Specimen target = createSpecimen(solution, study, "targetTaxon");
            String interactType = solution.get("p").asResource().getLocalName();
            InteractType interactType1 = InteractType.typeOf(StringUtils.replace(interactType, "RO_", "RO:"));
            if (interactType1 == null) {
                throw new StudyImporterException("failed to map interaction type [" + interactType + "]");
            }
            String collTime = solution.get("collTime").asLiteral().getString();
            Date date = parseDate(collTime);
            nodeFactory.setUnixEpochProperty(source, date);
            nodeFactory.setUnixEpochProperty(target, date);
            Location loc = nodeFactory.getOrCreateLocation(new LocationImpl(solution.get("collLat").asLiteral().getDouble(), solution.get("collLng").asLiteral().getDouble(), null, null));
            target.caughtIn(loc);
            source.caughtIn(loc);
            source.interactsWith(target, interactType1);
        }
    } catch (NodeFactoryException e) {
        throw new StudyImporterException("failed to import jsonld data in [" + getResourceURI() + "]", e);
    } finally {
        exec.close();
    }
}
Also used : InteractType(org.eol.globi.domain.InteractType) Study(org.eol.globi.domain.Study) Query(com.hp.hpl.jena.query.Query) StudyImpl(org.eol.globi.domain.StudyImpl) IOException(java.io.IOException) DatasetLocal(org.eol.globi.service.DatasetLocal) QueryExecution(com.hp.hpl.jena.query.QueryExecution) DateTime(org.joda.time.DateTime) Date(java.util.Date) Specimen(org.eol.globi.domain.Specimen) QuerySolution(com.hp.hpl.jena.query.QuerySolution) Model(com.hp.hpl.jena.rdf.model.Model) ResultSet(com.hp.hpl.jena.query.ResultSet) LocationImpl(org.eol.globi.domain.LocationImpl) Location(org.eol.globi.domain.Location)

Example 2 with Specimen

use of org.eol.globi.domain.Specimen in project eol-globi-data by jhpoelen.

the class StudyImporterForINaturalist method getSourceSpecimen.

private Specimen getSourceSpecimen(long observationId, String interactionDataType, Taxon sourceTaxon, Study study) throws StudyImporterException, NodeFactoryException {
    if (!"taxon".equals(interactionDataType)) {
        throw new StudyImporterException("expected [taxon] as observation_type datatype, but found [" + interactionDataType + "]");
    }
    Specimen sourceSpecimen = nodeFactory.createSpecimen(study, sourceTaxon);
    sourceSpecimen.setExternalId(TaxonomyProvider.ID_PREFIX_INATURALIST + observationId);
    return sourceSpecimen;
}
Also used : Specimen(org.eol.globi.domain.Specimen)

Example 3 with Specimen

use of org.eol.globi.domain.Specimen in project eol-globi-data by jhpoelen.

the class StudyImporterForKelpForest method createSpecimen.

protected Specimen createSpecimen(LabeledCSVParser parser, Map<String, Long> nameToId, String nameLabel, String stageLabel, Study study) throws NodeFactoryException {
    String sourceName = parser.getValueByLabel(nameLabel);
    Long id = nameToId.get(sourceName);
    String taxonExternalId = id == null ? null : TaxonomyProvider.ID_PREFIX_ITIS + id;
    Specimen sourceSpecimen = nodeFactory.createSpecimen(study, new TaxonImpl(sourceName, taxonExternalId));
    String sourceLifeStage = parser.getValueByLabel(stageLabel);
    Term orCreateLifeStage = nodeFactory.getOrCreateLifeStage("KELP:" + sourceLifeStage, sourceLifeStage);
    sourceSpecimen.setLifeStage(orCreateLifeStage);
    return sourceSpecimen;
}
Also used : Specimen(org.eol.globi.domain.Specimen) TaxonImpl(org.eol.globi.domain.TaxonImpl) Term(org.eol.globi.domain.Term)

Example 4 with Specimen

use of org.eol.globi.domain.Specimen in project eol-globi-data by jhpoelen.

the class StudyImporterForRobledo method importStudy.

@Override
public void importStudy() throws StudyImporterException {
    String description = "García-Robledo C, Erickson DL, Staines CL, Erwin TL, Kress WJ. Tropical Plant–Herbivore Networks: Reconstructing Species Interactions Using DNA Barcodes Heil M, editor. PLoS ONE [Internet]. 2013 January 8;8(1):e52967. Available from: http://dx.doi.org/10.1371/journal.pone.0052967";
    String doi = "http://dx.doi.org/10.1371/journal.pone.0052967";
    Study study1 = new StudyImpl("García-Robledo et al 2013", description, doi, description);
    Study study = nodeFactory.getOrCreateStudy(study1);
    Map<String, String> abrLookup = buildPlantLookup();
    // spatial location from: http://www.ots.ac.cr/index.php?option=com_content&task=view&id=163&Itemid=348
    Double latitude = LocationUtil.parseDegrees("10°26'N");
    Double longitude = LocationUtil.parseDegrees("83°59'W");
    Location location;
    try {
        location = nodeFactory.getOrCreateLocation(new LocationImpl(latitude, longitude, 35.0, null));
    } catch (NodeFactoryException e) {
        throw new StudyImporterException("failed to create location", e);
    }
    // TODO: need to map date range of collections
    String studyResource = "robledo/table_s1_extract.csv";
    try {
        LabeledCSVParser parser = parserFactory.createParser(studyResource, CharsetConstant.UTF8);
        while (parser.getLine() != null) {
            String beetleName = parser.getValueByLabel("Herbivore species");
            String beetleScientificName = completeBeetleName(beetleName);
            Specimen predator = nodeFactory.createSpecimen(study, new TaxonImpl(beetleScientificName, null));
            predator.caughtIn(location);
            for (String plantAbbreviation : abrLookup.keySet()) {
                String plantScientificName = abrLookup.get(plantAbbreviation);
                String valueByLabel = parser.getValueByLabel(plantAbbreviation);
                try {
                    int interactionCode = Integer.parseInt(valueByLabel);
                    if (interactionCode > 0) {
                        Specimen plant = nodeFactory.createSpecimen(study, new TaxonImpl(plantScientificName, null));
                        plant.caughtIn(location);
                        predator.ate(plant);
                    }
                } catch (NumberFormatException ex) {
                    getLogger().warn(study, "malformed or no value [" + valueByLabel + "] found for [" + plantScientificName + "(" + plantAbbreviation + ")" + "] and beetle [" + beetleScientificName + "] could be found in [" + studyResource + ":" + parser.lastLineNumber() + "]");
                }
            }
        }
    } catch (IOException e) {
        throw new StudyImporterException("problem reading [" + studyResource + "]", e);
    } catch (NodeFactoryException e) {
        throw new StudyImporterException("cannot create specimens from [" + studyResource + "]", e);
    }
}
Also used : Study(org.eol.globi.domain.Study) TaxonImpl(org.eol.globi.domain.TaxonImpl) StudyImpl(org.eol.globi.domain.StudyImpl) LabeledCSVParser(com.Ostermiller.util.LabeledCSVParser) IOException(java.io.IOException) Specimen(org.eol.globi.domain.Specimen) LocationImpl(org.eol.globi.domain.LocationImpl) Location(org.eol.globi.domain.Location)

Example 5 with Specimen

use of org.eol.globi.domain.Specimen in project eol-globi-data by jhpoelen.

the class StudyImporterForRaymond method getSpecimen.

private Specimen getSpecimen(LabeledCSVParser dietParser, String nameLabel, String lifeStageLabel, Study study) throws NodeFactoryException {
    String predatorName = dietParser.getValueByLabel(nameLabel);
    Specimen predator = nodeFactory.createSpecimen(study, new TaxonImpl(predatorName, null));
    String predatorLifeStage = dietParser.getValueByLabel(lifeStageLabel);
    predator.setLifeStage(nodeFactory.getOrCreateLifeStage("RAYMOND:" + predatorLifeStage, predatorLifeStage));
    return predator;
}
Also used : Specimen(org.eol.globi.domain.Specimen) TaxonImpl(org.eol.globi.domain.TaxonImpl)

Aggregations

Specimen (org.eol.globi.domain.Specimen)91 TaxonImpl (org.eol.globi.domain.TaxonImpl)59 Study (org.eol.globi.domain.Study)38 StudyImpl (org.eol.globi.domain.StudyImpl)34 Location (org.eol.globi.domain.Location)31 LocationImpl (org.eol.globi.domain.LocationImpl)22 Test (org.junit.Test)17 LabeledCSVParser (com.Ostermiller.util.LabeledCSVParser)15 IOException (java.io.IOException)15 Date (java.util.Date)14 Relationship (org.neo4j.graphdb.Relationship)12 HashMap (java.util.HashMap)11 Taxon (org.eol.globi.domain.Taxon)11 SpecimenNode (org.eol.globi.domain.SpecimenNode)9 TermImpl (org.eol.globi.domain.TermImpl)9 ArrayList (java.util.ArrayList)8 InteractType (org.eol.globi.domain.InteractType)7 LatLng (org.eol.globi.geo.LatLng)6 Map (java.util.Map)5 TaxonNode (org.eol.globi.domain.TaxonNode)5