On 28/04/16 15:56, Scoggan, Tom wrote:
When writing a Model to an RDF string, I currently do something like this:


1.      Use the model.listNameSpaces() method to get the list of namespaces 
used --- this doesn't include namespaces used in URI's in the object position 
of triples

Model.listNamespaces list the names set on the model. Either in the data when read in, or set by the application.


2.      Manually add the missing namespaces for URI's in the object position of 
triples

Namespaces are not necessary - they are a convenience for presentation (and that works better in Turtle than RDF/XML). Choosing the prefix or namespace name

[except for properties in RDF/XML which can only be written with qnames]

3.      Assign prefixes to each namespace

Something somewhere is going to have to choose nice prefixes.


4.      Use the model.setNsPrefixes(prefixToNamespaceMap) method to update the 
Model accordingly

5.      Write the Model to an RDF string

Is there any way to avoid step 3 by having Jena auto-generate prefixes for 
namespaces used within the model (including URI's in the object position)?  If 
not, is there an alternative to model.listNameSpaces() that will also return 
namespaces used in URI's in the object position of triples?

Set them in the input data.

Or keep a Turtle file that is only prefixes and parse it into any model your create. Parsing a file sets the prefixes so if your data is N-triples, say, and you want to see it in pretty turtle, just add in some extra, domain specific, prefixes.

    Andy


Thanks!

Reply via email to