I don't get an exception.
You can not add triples to GraphPropertyTable - it's a graph view of the
underlying PropertyTable.
> How do I proceed in order to persist my property table on disk?
I'm moderately certain you have problems with the property table because
columns aren't URIs.
Writing out a GraphCSV should show the structure expected.
http://jena.apache.org/documentation/csv/
Andy
On 03/09/15 10:46, Kim A. Jakobsen wrote:
Hi
When I try to save my propertytabelgraph in a TDB dataset then I get
a org.apache.jena.shared.AddDeniedException exception.
This exception is thrown by the GraphBase class:
/**
Add a triple to the triple store. The default implementation throws an
AddDeniedException; subclasses must override if they want to be able to
add triples.
*/
@Override
public void performAdd( Triple t )
{ throw new AddDeniedException( "GraphBase::performAdd" ); }
This function is called because I create a GraphPropertyTable which inherit
from GraphBase but does not overwrite the perfromAdd method.
I am unsure on how I should proceed now. Either I am doing something wrong,
or then I need to implement the performAdd method!
Here is a minimum example that recreate the problem:
PropertyTable propertytable = new PropertyTableArrayImpl(2, 2);
Column alpha =
propertytable.createColumn(NodeFactory.createLiteral("alpha"));
Column beta =
propertytable.createColumn(NodeFactory.createLiteral("beta"));
Row one = propertytable.createRow(NodeFactory.createLiteral("one"));
Row two = propertytable.createRow(NodeFactory.createLiteral("two"));
propertytable.getRow(one.getRowKey()).setValue(alpha,NodeFactory.createLiteral("alpha-one"));
propertytable.getRow(one.getRowKey()).setValue(beta,NodeFactory.createLiteral("beta-two"));
propertytable.getRow(two.getRowKey()).setValue(alpha,NodeFactory.createLiteral("alpha-one"));
propertytable.getRow(two.getRowKey()).setValue(beta,NodeFactory.createLiteral("beta-two"));
GraphPropertyTable graph = new GraphPropertyTable(propertytable);
Model model = ModelFactory.createModelForGraph(graph); Dataset dataset =
TDBFactory.createDataset("tdb/");
dataset.begin(ReadWrite.WRITE);
try {
dataset.addNamedModel("www.example.org/model", model);
dataset.commit();
} finally {
dataset.end();
}
How do I proceed in order to persist my property table on disk?
On Thu, 27 Aug 2015 at 11:56 Andy Seaborne <[email protected]> wrote:
On 27/08/15 07:16, Kim A. Jakobsen wrote:
On Wed, 26 Aug 2015 at 21:15 Andy Seaborne <[email protected]> wrote:
On 26/08/15 10:24, Kim A. Jakobsen wrote:
Hi
I have created a property table and I would like to query it using
SPARQL.
My code looks as follows:
PropertyTable propertytable = new PropertyTableArrayImpl(1, 1);
Column something = propertytable.createColumn(NodeFactory.createURI("
http://example.org/" + "something"));
Row row = propertytable.createRow(NodeFactory.createURI("
http://example.org/"
+ "apple"));
row.setValue(something, NodeFactory.createLiteral("JOHN"));
How do I query the property table?
Hi there,
You can make the property table appear as an RDF graph with
GraphPropertyTable
and make that a model
ModelFactory.createModelForGraph
if you want to.
You can query it with SPARQL or the RDF API.
Andy
Additionally then I would also like to make my property table
persistent,
i.e. save it to the disk.
As fare as I know then it is only possible to save it as a CSV file, is
there any other options?
You can write the RDF graph.
I suspect that if I simply write the model to the disk it will save it
in
a statement table and not in a property table, how does it actually work?
It will be an RDF graph - not a CSV file. I was assuming you want to
work with CSV data as RDF but it sounds like you have a different
objective.
I would like to play around with different indexes for the property table
but I do not know how much is implemented in Jena already.
You'll have to look in the code for that. It's all in the jena-csv module.
Andy
Thanks
Kim
In fact, what might work for you is to convert the CSV file with
riotcmdx.csv2rdf and work in RDF from there on.
Andy
Regards
Kim A. Jakobsen