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)) {

Reply via email to