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!