JPhyloRef
JPhyloRef: a tool for testing and resolving phyloreferences - Published in JOSS (2021)
Science Score: 98.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 10 DOI reference(s) in README and JOSS metadata -
✓Academic publication links
Links to: joss.theoj.org, zenodo.org -
○Committers with academic emails
-
○Institutional organization owner
-
✓JOSS paper metadata
Published in Journal of Open Source Software
Repository
Basic Info
- Host: GitHub
- Owner: phyloref
- License: mit
- Language: Java
- Default Branch: master
- Size: 577 KB
Statistics
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 18
- Releases: 4
Metadata Files
README.md
JPhyloRef
JPhyloRef is a Java-based command line tool as well as a web service for reasoning with OWL ontologies containing phyloreferences and their accompanying reference phylogenetic trees. JPhyloRef has been published in The Journal of Open Source Software, which should be cited when this tool is reused.
Phyloreferences are clade definitions in the form of well-structured machine-readable data with machine-interpretable semantics. Clade definitions define groups of organisms consisting of an ancestor and all of its descendants ("clades") based on shared ancestry. In evolutionary biology, clades are a fundamental unit for understanding evolution and describing biodiversity (see de Queiroz, 2007). Clade definitions therefore provide the theoretical foundation for the semantics of taxon concepts to be defined and reproducibly resolved within a hypothesis of evolutionary relationships, i.e., a phylogeny. The aim of Phyloreferencing is to structure and represent the semantics of a clade definition and phylogenetic hypotheses using ontologies and formal logic expressions (in the Web Ontology Language) such that machines can unambigiuously and reproducibly retrieve the nodes in a tree that match the semantics of the clade definition (if any). For more information on the motivation for phyloreferencing see Cellinese et al., preprint, and for more information on how phyloreferences are implemented, see the JOSS manuscript included in this repository, or phyx.js, a JavaScript library for creating phyloreferences using OWL ontologies.
JPhyloRef has two main goals:
- The primary one is to facilitate automated testing that the semantics of the logical definitions imply ("resolve to") the correct nodes in the reference tree as clade ancestors. This is key in supporting quality control for the digitization of clade definitions from natural language text to a structured machine-interpretable representation. It also verifies that one of the theoretical foundational premises of phyloreferences, computational reproducibility, holds in practice.
- The secondary goal is to enable integration with external tools that need to obtain the clade ancestor node(s) resulting from a given ontology of phyloreferences and reference tree(s). When run as part of an automated testing workflow, JPhyloRef reports test results in the cross-platform Test Anything Protocol format. When used to find clade ancestor nodes implied by logical clade definitions, results are returned as a JSON object. JPhyloRef uses the OWL API reference library for reading Web Ontology Language (OWL) ontologies, and for the actual ontology reasoning step it uses an external and configurable OWL reasoner.
Usage
JPhyloRef wraps the ELK reasoner and provides three ways in which it can be used to resolve phyloreferences:
java -jar jphyloref.jar resolve input.owl: Resolves phyloreferences ininput.owland returns the nodes they resolve to in a JSON document.java -jar jphyloref.jar webserver: Starts a webserver that accepts ontologies for reasoning and provides the result as a JSON document.- Requests should be sent via POST to the
/reasonendpoint as an HTML form submission. The form can contain the ontology as a file upload in thejsonldFileelement or as a string in thejsonldelement. We will return a response in JSON with the results of the reasoning or with an error message. - You can also use the
/versionendpoint to test whether the software is working. It will report on the version of JPhyloRef, OWLAPI and reasoner being used. - Note that no content is served at
/; you will need to use/versionto test that the server is running.
- Requests should be sent via POST to the
java -jar jphyloref.jar test input.owl: Test all the phyloreferences ininput.owlby comparing their resolution with the expected resolution recorded in the file.
Detailed usage instructions are included in the JPhyloRef Usage document. Documentation of the source code is included as Javadoc comments, which are also available online at javadoc.io.
Command line options
Many command line options can be used for all included commands:
- --jsonld or -j can be used to interpret the input file as a JSON-LD file
rather than an RDF/XML file (resolve or test only).
- --host [hostname] or -h can be used to set the hostname that the webserver
should listen on (webserver only).
- --port [port number] or -p can be used to set the port that the webserver
should listen on (webserver only).
- --reasoner [name] can be used to set the reasoner to use. The following reasoners
are supported:
- Elk 0.4.3 (elk) is an OWL 2 EL
reasoner. Other reasoners for the OWL-EL profile may work but have not been tested. OWL-DL reasoners have been found to have insufficient performance.
Community guidelines
Development of JPhyloRef takes place in our GitHub repository. This includes an issue tracker for reporting any bugs you find or requesting any features you need. We welcome any pull requests to add additional features, tests or documentation. All new pull requests are tested with a continuous testing workflow.
Build and execution instructions
You will need Java and Apache Maven to build the software from source. We recommend installing these
tools using a package manager, such as Homebrew on macOS. You can use jEnv instead if you want to install
multiple Java versions on the same computer. Installation should set up the JAVA_HOME environment
variable; if not, you will need to set it to point at the directory containing your Java installation.
Once you have downloaded the source code to your computer, you can compile and test the code by running mvn test.
JPhyloRef can be built from source by running mvn package from the root directory of this repository. This will create a JAR file in the target/ directory, which can be executed by running,
for example:
$ java -jar target/jphyloref-1.2.0-SNAPSHOT.jar test src/test/resources/phylorefs/dummy1.owl
(Note that 1.2.0 should be replaced by the correct version number -- look for the Building JPhyloRef N.M.K-SNAPSHOT line in the output from mvn package, where N.M.K is the version, such as 1.2.0)
You can also download any published version of this software directly from Maven at https://search.maven.org/artifact/org.phyloref/jphyloref.
If you have Coursier installed, you can download and run JPhyloRef in one step by running:
$ coursier launch org.phyloref:jphyloref:1.1.1 -- test input.owl
Hosting a server with Webhook
JPhyloRef can be set up on a SLURM cluster using Webhook, allowing jobs to be executed on a separate computer from the web server.
Publishing to Sonatype OSSRH
To publish this package to the Sonatype OSSRH, we follow the workflow detailed on the Sonatype website. Note that you will need to set up a Maven settings.xml file with your GPG settings in order to sign the package for publication.
Once you're set up, you can run mvn clean deploy to publish the package
to the OSSRH. If your version number ends in -SNAPSHOT, this will be
published to the OSSRH Snapshots repository.
Owner
- Name: Phyloreferencing
- Login: phyloref
- Kind: organization
- Website: http://www.phyloref.org
- Repositories: 11
- Profile: https://github.com/phyloref
Computable, persistent, and portable semantics for clades on the Tree of Life
JOSS Publication
JPhyloRef: a tool for testing and resolving phyloreferences
Authors
Tags
clade definitions phyloreferences continuous integration testingCitation (CITATION.cff)
cff-version: 1.2.0
authors:
- family-names: Vaidya
given-names: Gaurav
orcid: https://orcid.org/0000-0003-0587-0454
- family-names: Lapp
given-names: Hilmar
orcid: https://orcid.org/0000-0001-9107-0714
title: "JPhyloRef: a tool for testing and resolving phyloreferences"
type: software
license: MIT
date-released: 2021-08-11
version: 1.1.1
identifiers:
- type: doi
value: 10.5281/zenodo.4697964
description: The concept DOI for JPhyloRef.
- type: doi
value: 10.5281/zenodo.5178723
description: The versioned DOI for version 1.1.1 of JPhyloRef.
url: "https://github.com/phyloref/jphyloref"
repository-code: "https://github.com/phyloref/jphyloref"
preferred-citation:
authors:
- family-names: Vaidya
given-names: Gaurav
orcid: https://orcid.org/0000-0003-0587-0454
- family-names: Cellinese
given-names: Nico
orcid: https://orcid.org/0000-0002-7157-9414
- family-names: Lapp
given-names: Hilmar
orcid: https://orcid.org/0000-0001-9107-0714
title: "JPhyloRef: a tool for testing and resolving phyloreferences"
type: article
doi: 10.21105/joss.03374
date-released: 2021-08-14
GitHub Events
Total
- Issues event: 1
- Push event: 16
- Pull request review event: 6
- Pull request review comment event: 6
- Pull request event: 1
- Create event: 1
Last Year
- Issues event: 1
- Push event: 16
- Pull request review event: 6
- Pull request review comment event: 6
- Pull request event: 1
- Create event: 1
Committers
Last synced: 11 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Gaurav Vaidya | g****v@g****m | 335 |
| Hilmar Lapp | h****p@d****t | 5 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 10 months ago
All Time
- Total issues: 40
- Total pull requests: 67
- Average time to close issues: 8 months
- Average time to close pull requests: about 2 months
- Total issue authors: 3
- Total pull request authors: 3
- Average comments per issue: 0.78
- Average comments per pull request: 0.7
- Merged pull requests: 59
- Bot issues: 0
- Bot pull requests: 2
Past Year
- Issues: 3
- Pull requests: 1
- Average time to close issues: N/A
- Average time to close pull requests: about 1 month
- Issue authors: 1
- Pull request authors: 1
- Average comments per issue: 0.0
- Average comments per pull request: 0.0
- Merged pull requests: 1
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- gaurav (32)
- iimog (5)
- jcoliver (3)
Pull Request Authors
- gaurav (65)
- hlapp (3)
- dependabot[bot] (2)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
- Total downloads: unknown
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 6
repo1.maven.org: org.phyloref:jphyloref
A tool for testing and resolving phyloreferences as OWL ontologies.
- Homepage: https://github.com/phyloref/jphyloref
- Documentation: https://appdoc.app/artifact/org.phyloref/jphyloref/
- License: MIT License
-
Latest release: 1.1.1
published almost 5 years ago
Rankings
Dependencies
- commons-cli:commons-cli 1.4
- net.sourceforge.owlapi:owlapi-apibinding 4.5.19
- org.eclipse.rdf4j:rdf4j-rio-api 2.3.2
- org.eclipse.rdf4j:rdf4j-rio-jsonld 2.3.2
- org.json:json 20180130
- org.nanohttpd:nanohttpd 2.3.1
- org.openrdf:openrdf-model 1.2.7
- org.semanticweb.elk:elk-owlapi 0.4.3
- org.slf4j:slf4j-simple 1.7.25
- org.tap4j:tap4j 4.2.1
- org.junit.jupiter:junit-jupiter-engine 5.3.1 test
- actions/cache v2 composite
- actions/checkout v2 composite
- actions/setup-java v1 composite
