in taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/RDFToManifest.java [125:157]
private List<Agent> getAgents(URI base, Individual in,
ObjectProperty property) {
List<Agent> creators = new ArrayList<>();
for (Individual agent : listObjectProperties(in, property)) {
Agent a = new Agent();
// Check for any ORCIDs, note that "orcid" is mapped as
// prov:alternateOf in our modified bundle.jsonld
for (Individual alternate : listObjectProperties(agent, prov.alternateOf)) {
if (alternate.isURIResource() && (
alternate.getURI().startsWith("https://orcid.org/") ||
alternate.getURI().startsWith("http://orcid.org/"))) {
// TODO: Check against https://support.orcid.org/knowledgebase/articles/116780-structure-of-the-orcid-identifier
a.setOrcid(URI.create(alternate.getURI()));
break;
}
}
if (agent.isURIResource()) {
URI agentURI = relativizeFromBase(agent.getURI(), base);
if ("orcid.org".equals(agentURI.getHost()) && a.getOrcid() == null) {
a.setOrcid(agentURI);
} else {
a.setUri(agentURI);
}
}
RDFNode name = agent.getPropertyValue(foaf.name);
if (name != null && name.isLiteral())
a.setName(name.asLiteral().getLexicalForm());
creators.add(a);
}
return creators;
}