Add retrievedFrom, retrievedOn and retrievedBy to RDF translation
Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/commit/c3bb6d97 Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/tree/c3bb6d97 Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/diff/c3bb6d97 Branch: refs/heads/master Commit: c3bb6d97ee48877e0c7949eff31c11063f746e8d Parents: e0e68bd Author: Mark Robinson <[email protected]> Authored: Tue Feb 21 09:16:31 2017 +0000 Committer: Mark Robinson <[email protected]> Committed: Tue Feb 21 09:16:31 2017 +0000 ---------------------------------------------------------------------- .../robundle/manifest/RDFToManifest.java | 95 ++++++++++++++++---- 1 file changed, 80 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/c3bb6d97/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/RDFToManifest.java ---------------------------------------------------------------------- diff --git a/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/RDFToManifest.java b/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/RDFToManifest.java index 0b03f10..d056ace 100644 --- a/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/RDFToManifest.java +++ b/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/RDFToManifest.java @@ -130,6 +130,9 @@ public class RDFToManifest { private ObjectProperty conformsTo; private ObjectProperty createdBy; private DatatypeProperty createdOn; + private ObjectProperty retrievedFrom; + private ObjectProperty retrievedBy; + private DatatypeProperty retrievedOn; private OntModel dct; private OntModel foaf; private DatatypeProperty foafName; @@ -336,7 +339,12 @@ public class RDFToManifest { createdOn = ontModel.getDatatypeProperty(PAV + "createdOn"); authoredBy = ontModel.getObjectProperty(PAV + "authoredBy"); authoredOn = ontModel.getDatatypeProperty(PAV + "authoredOn"); - checkNotNull(createdBy, createdOn, authoredBy, authoredOn); + retrievedFrom = ontModel.getObjectProperty(PAV + "retrievedFrom"); + retrievedBy = ontModel.getObjectProperty(PAV + "retrievedBy"); + retrievedOn = ontModel.getDatatypeProperty(PAV + "retrievedOn"); + + checkNotNull(createdBy, createdOn, authoredBy, authoredOn, + retrievedFrom, retrievedBy, retrievedOn); pav = ontModel; } @@ -383,6 +391,7 @@ public class RDFToManifest { throw new IOException("root ResearchObject not found - " + "Not a valid RO Bundle manifest"); + // isDescribedBy URI for (Individual manifestResource : listObjectProperties(ro, isDescribedBy)) { String uriStr = manifestResource.getURI(); @@ -397,29 +406,54 @@ public class RDFToManifest { manifest.getManifest().add(path); } + // createdBy List<Agent> creators = getAgents(root, ro, createdBy); if (!creators.isEmpty()) { manifest.setCreatedBy(creators.get(0)); - if (creators.size() > 1) + if (creators.size() > 1) { logger.warning("Ignoring additional createdBy agents"); + } } + // createdOn RDFNode created = ro.getPropertyValue(createdOn); manifest.setCreatedOn(literalAsFileTime(created)); - + // history List<Path> history = new ArrayList<Path> (); - for (Individual histItem : listObjectProperties (ro, hasProvenance)) - history.add (Bundles.uriToBundlePath (manifest.getBundle (), relativizeFromBase(histItem.getURI (), root))); - manifest.setHistory (history); + for (Individual histItem : listObjectProperties (ro, hasProvenance)) { + history.add(Bundles.uriToBundlePath(manifest.getBundle(), relativizeFromBase(histItem.getURI(), root))); + } + manifest.setHistory(history); - + // authoredBy List<Agent> authors = getAgents(root, ro, authoredBy); - if (!authors.isEmpty()) + if (!authors.isEmpty()) { manifest.setAuthoredBy(authors); + } + + // authoredOn RDFNode authored = ro.getPropertyValue(authoredOn); manifest.setAuthoredOn(literalAsFileTime(authored)); + // retrievedFrom + RDFNode retrievedNode = ro.getPropertyValue(retrievedFrom); + manifest.setRetrievedFrom(retrievedNode); + + // retrievedBy + List<Agent> retrievers = getAgents(root, ro, retrievedBy); + if (!retrievers.isEmpty()) { + manifest.setRetrievedBy(retrievers.get(0)); + if (retrievers.size() > 1) { + logger.warning("Ignoring additional retrievedBy agents"); + } + } + + // retrievedOn + RDFNode retrieved = ro.getPropertyValue(retrievedOn); + manifest.setRetrievedOn(literalAsFileTime(retrieved)); + + // Aggregates for (Individual aggrResource : listObjectProperties(ro, aggregates)) { String uriStr = aggrResource.getURI(); // PathMetadata meta = new PathMetadata(); @@ -432,6 +466,7 @@ public class RDFToManifest { PathMetadata meta = manifest.getAggregation(relativizeFromBase( uriStr, root)); + // hasProxy Set<Individual> proxies = listObjectProperties(aggrResource, hasProxy); if (!proxies.isEmpty()) { @@ -439,33 +474,63 @@ public class RDFToManifest { Individual proxy = proxies.iterator().next(); String proxyUri = null; - if (proxy.getURI() != null) + if (proxy.getURI() != null) { proxyUri = proxy.getURI(); - else if (proxy.getSameAs() != null) + } else if (proxy.getSameAs() != null) { proxyUri = proxy.getSameAs().getURI(); - if (proxyUri != null) + } + + if (proxyUri != null) { setPathProxy(meta, relativizeFromBase(proxyUri, root)); + } } + // createdBy creators = getAgents(root, aggrResource, createdBy); if (!creators.isEmpty()) { meta.setCreatedBy(creators.get(0)); - if (creators.size() > 1) + if (creators.size() > 1) { logger.warning("Ignoring additional createdBy agents for " + meta); + } } + + // createdOn meta.setCreatedOn(literalAsFileTime(aggrResource .getPropertyValue(createdOn))); + // retrievedFrom + RDFNode retrievedAggrNode = aggrResource.getPropertyValue(retrievedFrom); + meta.setRetrievedFrom(retrievedAggrNode); + + // retrievedBy + List<Agent> retrieversAggr = getAgents(root, aggrResource, retrievedBy); + if (!retrieversAggr.isEmpty()) { + meta.setRetrievedBy(retrieversAggr.get(0)); + if (retrieversAggr.size() > 1) { + logger.warning("Ignoring additional retrievedBy agents for " + + meta); + } + } + + // retrievedOn + RDFNode retrievedAggr = aggrResource.getPropertyValue(retrievedOn); + meta.setRetrievedOn(literalAsFileTime(retrievedAggr)); + + // conformsTo for (Individual standard : listObjectProperties(aggrResource, - conformsTo)) - if (standard.getURI() != null) + conformsTo)) { + if (standard.getURI() != null) { meta.setConformsTo(relativizeFromBase(standard.getURI(), root)); + } + } + // format RDFNode mediaType = aggrResource.getPropertyValue(format); - if (mediaType != null && mediaType.isLiteral()) + if (mediaType != null && mediaType.isLiteral()) { meta.setMediatype(mediaType.asLiteral().getLexicalForm()); + } } for (Individual ann : listObjectProperties(ro, hasAnnotation)) {
