You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by st...@apache.org on 2018/05/10 12:33:24 UTC
[4/7] incubator-taverna-language git commit: TAVERNA-1044: Support
rdf:value below dct:W3CDTF bnode
TAVERNA-1044: Support rdf:value below dct:W3CDTF bnode
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/1db178fa
Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/tree/1db178fa
Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/diff/1db178fa
Branch: refs/heads/master
Commit: 1db178fa78a2ec7140dd6cf901d4738b4677aaa7
Parents: e33a636
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Thu May 10 11:25:38 2018 +0100
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Thu May 10 11:25:38 2018 +0100
----------------------------------------------------------------------
.../apache/taverna/robundle/utils/RDFUtils.java | 40 ++++++++++++++++----
1 file changed, 33 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/1db178fa/taverna-robundle/src/main/java/org/apache/taverna/robundle/utils/RDFUtils.java
----------------------------------------------------------------------
diff --git a/taverna-robundle/src/main/java/org/apache/taverna/robundle/utils/RDFUtils.java b/taverna-robundle/src/main/java/org/apache/taverna/robundle/utils/RDFUtils.java
index 716a723..2b13922 100644
--- a/taverna-robundle/src/main/java/org/apache/taverna/robundle/utils/RDFUtils.java
+++ b/taverna-robundle/src/main/java/org/apache/taverna/robundle/utils/RDFUtils.java
@@ -1,5 +1,7 @@
package org.apache.taverna.robundle.utils;
+import static java.nio.file.attribute.FileTime.fromMillis;
+
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -21,29 +23,53 @@ package org.apache.taverna.robundle.utils;
import static org.apache.jena.datatypes.xsd.XSDDatatype.XSDdateTime;
-import static java.nio.file.attribute.FileTime.fromMillis;
import java.nio.file.attribute.FileTime;
+import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.jena.datatypes.DatatypeFormatException;
import org.apache.jena.datatypes.xsd.XSDDateTime;
import org.apache.jena.rdf.model.Literal;
import org.apache.jena.rdf.model.RDFNode;
+import org.apache.jena.rdf.model.Statement;
+import org.apache.jena.vocabulary.RDF;
public class RDFUtils {
private static final Logger logger = Logger.getLogger(RDFUtils.class
.getCanonicalName());
public static FileTime literalAsFileTime(RDFNode rdfNode) {
- if (rdfNode == null)
- return null;
- if (!rdfNode.isLiteral()) {
- new Exception().printStackTrace();
- logger.warning("Expected literal. not " + rdfNode);
+ if (rdfNode == null) {
return null;
}
- Literal literal = rdfNode.asLiteral();
+ final Literal literal;
+ if (rdfNode.isLiteral()) {
+ literal = rdfNode.asLiteral();
+ } else {
+ // TAVERNA-1044: not a literal, so assume a resource.
+ // Let's climb into rdf:value if it exists, in case we're in a
+ // <dct:W3CDTF> typed bnode.
+ Statement valueStmt = rdfNode.asResource().getProperty(RDF.value);
+ if (valueStmt == null) {
+ // Make our own exception so logger gets a stacktrace
+ Exception ex = new Exception("Can't find timestamp as literal");
+ logger.log(Level.WARNING,
+ "Expected literal or resource with rdf:value. not " + rdfNode,
+ ex);
+ return null;
+ }
+ if (valueStmt.getObject().isLiteral()) {
+ literal = valueStmt.getObject().asLiteral();
+ } else {
+ Exception ex = new Exception("Invalid timestamp literal");
+ logger.log(Level.WARNING,
+ "Expected rdf:value statement with literal object, not" + valueStmt,
+ ex);
+ return null;
+ }
+ }
+
Object value = literal.getValue();
XSDDateTime dateTime;
if (value instanceof XSDDateTime) {