THanks Andy and David, I have now looked at this and I still have questions! 1- when you say transactions will not work across a mixture of graphs in a dataset, does that mean that I will not be able to query and/or use reasoners on this dataset? 2- if not, then what would be the best solution to keep an RDF/XML ontology which will have thousands of individuals? I would have thought I could create the structure ontology (the OWL file) and keep it separate from the data file (as in TDB) that will be assigned to the OWL ontology nodes. I am new to this field and I appreciate any hints. To make it more clear or refresh your memory, here is the problem I am trying to solve: I have created an ontology in OWL somewhere in which I have a node named NAME which includes subparts of the name in NAME_PART1, ..., NAME_PARTn. I have a large CSV data file that has (many) records of names and the n name parts. I will have to convert the CSV file into an RDF dataset (which I will find a way for, should not be too complicated). Then, I need to make a connection between the RDF dataset of these records and the OWL ontology that keeps the relationships between the concept nodes, e.g., NAME has_a NAME_PART1. Given that I have the two OWL and RDF files ready, what would I have to do next to be able to query over the NAMEs and NAME_PARTs. What does it take to glue the two files? kind regards, Bahador
________________________________ From: David Jordan <[email protected]> To: "[email protected]" <[email protected]> Sent: Thursday, 16 May 2013 5:13 AM Subject: RE: Owl Ontology and TDB Individuals OK, now with your clarification it makes sense to me and is what I expected. -----Original Message----- From: Andy Seaborne [mailto:[email protected]] Sent: Wednesday, May 15, 2013 3:03 PM To: [email protected] Subject: Re: Owl Ontology and TDB Individuals On 15/05/13 18:47, David Jordan wrote: > Andy, Please clarify something. In this reply, you state * Put the > ontology in one named graph and the individuals in another one, or the > default graph, and hence in the same database? * You can put a single > graph from TDB into a general dataset or just work with that one graph > (transactions will not work across a mixture of graphs in a dataset). > > You then reference the online docs that state: It is possible to use > just one of the graphs from the dataset. A common way of working with > one graph is to use the default graph of the dataset. Dataset dataset = DatasetFactory.createMem() ; Dataset tdb = TDBFactory.createDataset() ; // Pick one graph/model out of the dataset. Model m1 = tdb.getNamedModel("http://example/tdb/graph") ; dataset.addNamedModel("http://example/individuals", m1) ; // A model with completely different storage Model m2 = ModelFactory.createDefaultModel() ; dataset.addNamedModel("http://example/ontology", m2) ; ... a dataset with a mix of model storage implementations. > > My code uses the interface com.hp.hpl.jena.query.Dataset. It allows me > to start/stop transactions and to access named models. I can access > multiple named models. Isn't a model a graph in the database? > Isn't a graph == model == graph ? You say that "transactions will not > work across a mixture of graphs in a dataset". So a given > com.hp.hpl.jena.query.Dataset object, while it can return multiple > named Models, you cannot use them in the same transaction? then dataset.begin(ReadWrite.READ) ; ==> exception. "Transactions not supported" > When you said "a general dataset", are you referring to the default > model/graph, which is stored in a triple table in SDB and essentially > is using the single default graph managed by TDB/SDB? The kind of dataset returned by DatasetFactory.createMem() > Some of the wording used, both in the documentation and in your reply, > seem vague to me, with multiple interpretations. I don't believe the > single sentence "It is possible to use just one of the graphs from the > dataset." is true. Could you suggest improvements? Andy
