Hi Andy - thanks. I will try this and let you know if this works.
> Date: Thu, 16 Jul 2015 18:22:23 +0100 > From: [email protected] > To: [email protected] > Subject: Re: Provenance of provenance > > On 15/07/15 19:50, Neil Macwan wrote: > > I am building a model in Jena and am able to add resources, statements, and > > properties to it. I also want to add information to this model on its own > > provenance (the provenance of the model). An example of this is Example 2 > > at http://www.w3.org/TR/prov-o/#narrative-example-expanded-1. I've pulled > > out the part I'm interested in below: > > @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . > > @prefix foaf: <http://xmlns.com/foaf/0.1/> . > > @prefix sioc: <http://rdfs.org/sioc/ns#> . > > @prefix prov: <http://www.w3.org/ns/prov#> . > > @prefix my: <http://www.example.org/vocab#> . > > @prefix : <http://www.example.org#> . > > @base <http://www.example.com/derek-bundle.ttl> . > > > > <> > > a prov:Bundle, prov:Entity; > > prov:wasAttributedTo :postEditor; > > prov:generatedAtTime "2011-07-16T02:52:02Z"^^xsd:dateTime; > > . > > > > :derek > > a prov:Person, prov:Agent; ## prov:Agent is inferred from prov:Person > > foaf:givenName "Derek"; > > foaf:mbox <mailto:[email protected]>; > > prov:actedOnBehalfOf :national_newspaper_inc; > > .The resource described by "<>" describes the document itself. It is a > > prov:Bundle and a prov:Entity with other attributes. I am trying to do > > something similar for my models in Jena and have not been successful. You > > can create resources, statements, and properties from a model and then link > > them and add them to the model but there does not seem to be a way of > > adding statements and properties to a model to describe the model itself. > > Am I missing something or is there a way of doing this? Some sample code I > > have tried to achieve this is below, this outputs an anonymous resource. > > How do I add statements to a model describing the model itself? > > Namespace provns = new > > Namespace("prov","http://www.w3.org/ns/prov#"); Model model > > = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM); Property > > provEntity = model.createProperty(provns.getUri() + "Entity"); > > Property provBundle = model.createProperty(provns.getUri() + "Bundle"); > > Statement stmt = > > model.createStatement(model.createResource(),provEntity,provBundle); > > model.add(stmt); System.out.println("model="); > > RDFDataMgr.write(System.out,model,Lang.TURTLE); > > Output:model=@prefix owl: <http://www.w3.org/2002/07/owl#> .@prefix rdf: > > <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .@prefix xsd: > > <http://www.w3.org/2001/XMLSchema#> .@prefix rdfs: > > <http://www.w3.org/2000/01/rdf-schema#> . > > [ <http://www.w3.org/ns/prov#Entity> > > <http://www.w3.org/ns/prov#Bundle> ] . > > Neil > > > > > > Neil, > > <> is a shorthand. RDF always works with absolute URIs. <> (which is > the relative URI of the empty string, will be resolved to the base URI > for the document. Try parsing your Turtle file to N-Triples and you > will see what the <> becomes. > > Try adding statements with that subject URI (absolute URI). > > If you really want to force the <> in the output, writing with a base > URI should do it: > > String baseURI = "file:/// ....." ; > Model model = .. > > WriterGraphRIOT w = RDFDataMgr.createGraphWriter(Lang.TTL) ; > w.write(System.out, model.getGraph(), null, baseURI, null) ; > > which puts in @base. > > Andy >
