From ebecbb409fb2929ddc58f4ae05488fac4026a2e6 Mon Sep 17 00:00:00 2001 From: AnitaCao Date: Tue, 29 Jul 2014 16:39:30 +0100 Subject: [PATCH 1/3] Added methods for creating wasStartedBy associations --- .../dotrural/prov/jena/ProvenanceBundle.java | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/src/main/java/uk/ac/dotrural/prov/jena/ProvenanceBundle.java b/src/main/java/uk/ac/dotrural/prov/jena/ProvenanceBundle.java index 1d0cae5..fbf2709 100644 --- a/src/main/java/uk/ac/dotrural/prov/jena/ProvenanceBundle.java +++ b/src/main/java/uk/ac/dotrural/prov/jena/ProvenanceBundle.java @@ -332,6 +332,64 @@ public boolean addWasInformedBy(Resource activity1, Resource activity2) return false; } + /** + * Add a statement describing an entity being assigned to another entity + * @author anitacao + * @param entity1 + * @param entity2 + * @return + */ + public boolean addWasAssignedTo(String entity1, String entity2) + { + return addWasGeneratedBy(prov.createResource(entity1), prov.createResource(entity2)); + } + + /** + * Add a statement describing an entity being assigned to another entity + * @author anitacao + * @param entity1 + * @param entity2 + * @return boolean indicating success + */ + public boolean addWasAssignedTo(Resource entity1, Resource entity2) + { + if(checkType(entity1, "Entity") && checkType(entity2, "Entity")) + { + add(entity1, prov.createProperty(PROV_NS + "wasAssignedTo"), entity2); + return true; + } + return false; + } + + /** + * Add a statement describing an activity was started by an agent + * @author anitacao + * @param activity + * @param agent + * @return + */ + public boolean addWasStartedBy(String activity, String agent) + { + return addWasStartedBy(prov.createResource(activity), prov.createResource(agent)); + } + + /** + * Add a statement describing an activity was started by an agent + * @author anitacao + * @param activity + * @param agent + * @return boolean indicating success + */ + public boolean addWasStartedBy(Resource activity, Resource agent) + { + if(checkType(activity, "Activity") && checkType(agent, "Agent")) + { + add(activity, prov.createProperty(PROV_NS + "wasStartedBy"), agent); + return true; + } + return false; + } + /** * Check the type of the given Resource * From e56e4da2f681d1aff7eab7e6d442ecf185443bfd Mon Sep 17 00:00:00 2001 From: AnitaCao Date: Tue, 29 Jul 2014 16:45:56 +0100 Subject: [PATCH 2/3] Removing wasAssignedTo methods (as not in PROV) --- .gitignore | 1 + .../dotrural/prov/jena/ProvenanceBundle.java | 30 +------------------ 2 files changed, 2 insertions(+), 29 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c8b241f --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +target/* \ No newline at end of file diff --git a/src/main/java/uk/ac/dotrural/prov/jena/ProvenanceBundle.java b/src/main/java/uk/ac/dotrural/prov/jena/ProvenanceBundle.java index fbf2709..1f400f7 100644 --- a/src/main/java/uk/ac/dotrural/prov/jena/ProvenanceBundle.java +++ b/src/main/java/uk/ac/dotrural/prov/jena/ProvenanceBundle.java @@ -332,35 +332,7 @@ public boolean addWasInformedBy(Resource activity1, Resource activity2) return false; } - /** - * Add a statement describing an entity being assigned to another entity - * @author anitacao - * @param entity1 - * @param entity2 - * @return - */ - public boolean addWasAssignedTo(String entity1, String entity2) - { - return addWasGeneratedBy(prov.createResource(entity1), prov.createResource(entity2)); - } - - /** - * Add a statement describing an entity being assigned to another entity - * @author anitacao - * @param entity1 - * @param entity2 - * @return boolean indicating success - */ - public boolean addWasAssignedTo(Resource entity1, Resource entity2) - { - if(checkType(entity1, "Entity") && checkType(entity2, "Entity")) - { - add(entity1, prov.createProperty(PROV_NS + "wasAssignedTo"), entity2); - return true; - } - return false; - } - + /** * Add a statement describing an activity was started by an agent * @author anitacao From db01717f87615b7a97e3307f289d0ee03b1b86c6 Mon Sep 17 00:00:00 2001 From: AnitaCao Date: Fri, 1 Aug 2014 09:38:33 +0100 Subject: [PATCH 3/3] added methods for creating wasInvalidatedBy associations --- .../dotrural/prov/jena/ProvenanceBundle.java | 36 ++++++++++++++++-- target/prov-api-0.0.1-SNAPSHOT.jar | Bin 13973 -> 0 bytes 2 files changed, 33 insertions(+), 3 deletions(-) delete mode 100644 target/prov-api-0.0.1-SNAPSHOT.jar diff --git a/src/main/java/uk/ac/dotrural/prov/jena/ProvenanceBundle.java b/src/main/java/uk/ac/dotrural/prov/jena/ProvenanceBundle.java index 1f400f7..b9ed7bd 100644 --- a/src/main/java/uk/ac/dotrural/prov/jena/ProvenanceBundle.java +++ b/src/main/java/uk/ac/dotrural/prov/jena/ProvenanceBundle.java @@ -334,11 +334,11 @@ public boolean addWasInformedBy(Resource activity1, Resource activity2) /** - * Add a statement describing an activity was started by an agent + * Add a statement describing an activity being started by an agent * @author anitacao * @param activity * @param agent - * @return + * @return boolean indicating success */ public boolean addWasStartedBy(String activity, String agent) { @@ -346,7 +346,7 @@ public boolean addWasStartedBy(String activity, String agent) } /** - * Add a statement describing an activity was started by an agent + * Add a statement describing an activity being started by an agent * @author anitacao * @param activity * @param agent @@ -362,6 +362,36 @@ public boolean addWasStartedBy(Resource activity, Resource agent) return false; } + /** + * Add a statement describing an entity being invalidating by an activity + * @author anitacao + * @param entity + * @param activity + * @return boolean indicating success + */ + public boolean addWasInvalidatedBy(String entity, String activity) + { + return addWasInvalidatedBy(prov.createResource(entity),prov.createResource(activity)); + } + + /** + * Add a statement describing an entity being invalidating by an activity + * @author anitacao + * @param entity + * @param activity + * @return boolean indicating success + */ + public boolean addWasInvalidatedBy(Resource entity, Resource activity) + { + if(checkType(entity, "Entity") && checkType(activity, "Activity")) + { + add(entity, prov.createProperty(PROV_NS + "wasInvalidatedBy"), activity); + return true; + } + return false; + } + + /** * Check the type of the given Resource * diff --git a/target/prov-api-0.0.1-SNAPSHOT.jar b/target/prov-api-0.0.1-SNAPSHOT.jar deleted file mode 100644 index 0907ba612d541c3ab3e03cecbbe71f2fa632d62d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13973 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