package org.apache.taverna.scufl2.wfdesc; /* * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * */ import java.io.OutputStream; import org.apache.taverna.scufl2.api.annotation.Revision; import org.apache.taverna.scufl2.api.core.Workflow; import org.apache.taverna.scufl2.api.io.WriterException; import org.apache.taverna.scufl2.wfdesc.ontologies.Prov_o; import org.apache.jena.ontology.Individual; import org.apache.jena.ontology.OntClass; import org.apache.jena.ontology.OntModel; import org.apache.jena.rdf.model.ModelFactory; public class ROEvoSerializer { //private URITools uriTools = new URITools(); public void workflowHistory(Workflow mainWorkflow, OutputStream output) throws WriterException { OntModel model = ModelFactory.createOntologyModel(); Revision revision = mainWorkflow.getCurrentRevision(); Revision previous = revision.getPreviousRevision(); addRevision(model, revision); while (previous != null) { addRevision(model, previous); addPrevious(model, revision, previous); revision = previous; previous = revision.getPreviousRevision(); } java.net.URI baseURI = Workflow.WORKFLOW_ROOT; model.setNsPrefix("roevo", "http://purl.org/wf4ever/roevo#"); model.setNsPrefix("prov", "http://www.w3.org/ns/prov#"); model.setNsPrefix("rdfs", "http://www.w3.org/2000/01/rdf-schema#"); model.write(output, "Turtle", baseURI.toASCIIString()); // throw new WriterException("Can't write to output", e); } private void addRevision(OntModel model, Revision revision) { OntClass VersionableResource = model.createClass("http://purl.org/wf4ever/roevo#VersionableResource"); VersionableResource.addSuperClass(Prov_o.Entity); Individual revisionResource = model.createIndividual(revision.getIdentifier().toASCIIString(), VersionableResource); revisionResource.addRDFType(Prov_o.Entity); } private void addPrevious(OntModel model, Revision revision, Revision previous) { OntClass VersionableResource = model.createClass("http://purl.org/wf4ever/roevo#VersionableResource"); VersionableResource.addSuperClass(Prov_o.Entity); Individual revisionResource = model.createIndividual(revision.getIdentifier().toASCIIString(), VersionableResource); Individual previousResource = model.createIndividual(previous.getIdentifier().toASCIIString(), VersionableResource); revisionResource.addProperty(Prov_o.wasRevisionOf, previousResource); } }