Re: fuseki ontmodel capacity
Hi Andy, no joy yet. On Wed, 2015-06-24 at 22:36 +0100, Andy Seaborne wrote: > On 24/06/15 21:37, Paul Tyson wrote: > > Before working through the configuration of an ontology model in > > fuseki2, I wanted to ask if anyone has experience with large models. > > > > I estimate there will be 250K class definitions, about 40M triples. > > That's not that large :-) > (There are installations I've worked with x10 that many triples). > > What hardware are you running on? I just took a small sample (500 class definitions), and am running on a Windows laptop with 4Gb memory. > > > > > My queries will be for instance checking: > > > > select ?class > > where { > > _:a rdf:type ?class; > > ex:p1 "v1"; > > ex:p2 ; > > Well, depending on the frequencies of > > ? ex:p1 "v1" > and > ? ex:p2 > > that query will be quite fast. i.e. if there is a property-object that > selects a few resources (100s), then that 's no much of a stress test > should work fine. I specified OWL_MEM_MICRO_RULE_INF for the OntModel. Fuseki grinds on this query for a long time (more than 30 minutes) and consumes all memory and cpu. > > > # ...all properties of _:a > > . > > } > > > > Is there hope of fast performance in this scenario? > > Yes. To be clear, my class definitions are like: owl:equivalentClass [owl:intersectionOf ( [owl:unionOf ( ...)] [owl:unionOf ( ...)] )]; owl:equivalentClass [owl:Restriction; owl:onProperty ex:p1; owl:hasValue "v1"]. owl:equivalentClass [owl:Restriction; owl:onProperty ex:p2; owl:hasValue "v2"]. I expect to find ,, as a rdf:types of [ex:p1 "v1";ex:p2 "v2"]. Eventually I need to use OWL2 datatype restrictions, so it doesn't appear the current Jena OWL reasoner will get me there, but I wanted to explore the capabilities. I need to get some other tools to validate the ontology to make sure there's nothing pathological, but on inspection it looks OK. Regards, --Paul > > > > > Any other approaches for better performance? > > > > Thanks, > > --Paul > > >
Re: fuseki2 ontmodel config
Thanks Andy. Simple fix, noted below. However, it turns out I have OWL2 constructs (datatype restrictions) that apparently are not handled by the Jena OWL reasoners. On Thu, 2015-06-25 at 12:56 +0100, Andy Seaborne wrote: > Hi Paul, > > On 25/06/15 03:42, Paul Tyson wrote: > > I cannot piece together a workable configuration for fuseki2 with an > > OntModel. > > > > Combining the config-tdb-dir template with info from > > http://jena.markmail.org/message/wr3f6gy5orxbszyd I get the config shown > > below. > > > > When I put this as file "tdb-owl.ttl" in the FUSEKI_BASE/configuration > > directory, fuseki says "Can't find .../tdb-owl.ttl" on startup. When I > > point to it with --config option on fuseki-server.bat command line, > > fuseki starts but the dataset does not appear. > > In each case, what does the log file show? > > For the --config case do you get these two lines adjacent? > > [...] Config INFO Configuration file: config.ttl > [...] Server INFO Started 2015/06/25 12:45:20 BST on port 3030 > > > > > This config will not work with v2.0.0 and --config because it is missing: > > > [ ja:loadClass "com.hp.hpl.jena.tdb.TDB" ] . > > tdb:DatasetTDB rdfs:subClassOf ja:RDFDataset . > tdb:GraphTDB rdfs:subClassOf ja:Model . > I had that much. > > [] rdf:type fuseki:Server ; >fuseki:services ( > <#service_tdb> > ) . Ah, I was missing the fuseki:services property. That fixed it. > > > (the development version does not need this) > > > I can't tell what the "Can't find .../tdb-owl.ttl" but it might be a > now-fixed-bug JENA-915 > > Would it be possible for you to try the development build v2.3.0 (Java8 > required). > > https://repository.apache.org/content/groups/snapshots/org/apache/jena/jena-fuseki/2.3.0-SNAPSHOT/ > Unfortunately, not at this time, as I must work through remaining issues on this proof-of-concept. Regards, --Paul > Andy > > > <#service_tdb> rdf:type fuseki:Service ; > > rdfs:label "TDB DB" ; > > fuseki:name "db" ; > > fuseki:serviceQuery "query" ; > > fuseki:serviceQuery "sparql" ; > > fuseki:serviceUpdate"update" ; > > fuseki:serviceUpload"upload" ; > > fuseki:serviceReadWriteGraphStore "data" ; > > # A separate read-only graph store endpoint: > > fuseki:serviceReadGraphStore "get" ; > > fuseki:dataset <#dataset> ; > > . > > > > <#dataset> rdf:type ja:RDFDataset ; > > ja:defaultGraph <#model_inf> ; > > . > > > > <#model_inf> rdf:type ja:OntModel ; > > ja:baseModel <#tdbGraph> ; > > ja:ontModelSpec ja:OWL_DL_MEM_RULE_INF; > > . > > > > <#tdbDataset> rdf:type tdb:DatasetTDB ; > > tdb:location "DB" ; > > . > > > > <#tdbGraph> rdf:type tdb:GraphTDB ; > > tdb:dataset <#tdbDataset> > > . > > > > Thanks, > > --Paul > > >
Re: fuseki2 ontmodel config
Hi Paul, On 25/06/15 03:42, Paul Tyson wrote: I cannot piece together a workable configuration for fuseki2 with an OntModel. Combining the config-tdb-dir template with info from http://jena.markmail.org/message/wr3f6gy5orxbszyd I get the config shown below. When I put this as file "tdb-owl.ttl" in the FUSEKI_BASE/configuration directory, fuseki says "Can't find .../tdb-owl.ttl" on startup. When I point to it with --config option on fuseki-server.bat command line, fuseki starts but the dataset does not appear. In each case, what does the log file show? For the --config case do you get these two lines adjacent? [...] Config INFO Configuration file: config.ttl [...] Server INFO Started 2015/06/25 12:45:20 BST on port 3030 This config will not work with v2.0.0 and --config because it is missing: [ ja:loadClass "com.hp.hpl.jena.tdb.TDB" ] . tdb:DatasetTDB rdfs:subClassOf ja:RDFDataset . tdb:GraphTDB rdfs:subClassOf ja:Model . [] rdf:type fuseki:Server ; fuseki:services ( <#service_tdb> ) . (the development version does not need this) I can't tell what the "Can't find .../tdb-owl.ttl" but it might be a now-fixed-bug JENA-915 Would it be possible for you to try the development build v2.3.0 (Java8 required). https://repository.apache.org/content/groups/snapshots/org/apache/jena/jena-fuseki/2.3.0-SNAPSHOT/ Andy <#service_tdb> rdf:type fuseki:Service ; rdfs:label "TDB DB" ; fuseki:name "db" ; fuseki:serviceQuery "query" ; fuseki:serviceQuery "sparql" ; fuseki:serviceUpdate"update" ; fuseki:serviceUpload"upload" ; fuseki:serviceReadWriteGraphStore "data" ; # A separate read-only graph store endpoint: fuseki:serviceReadGraphStore "get" ; fuseki:dataset <#dataset> ; . <#dataset> rdf:type ja:RDFDataset ; ja:defaultGraph <#model_inf> ; . <#model_inf> rdf:type ja:OntModel ; ja:baseModel <#tdbGraph> ; ja:ontModelSpec ja:OWL_DL_MEM_RULE_INF; . <#tdbDataset> rdf:type tdb:DatasetTDB ; tdb:location "DB" ; . <#tdbGraph> rdf:type tdb:GraphTDB ; tdb:dataset <#tdbDataset> . Thanks, --Paul