You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jena.apache.org by Dave Kolas <dk...@bbn.com> on 2016/03/01 20:20:08 UTC
RDFS inference in Fuseki w/ TDB
Hi there,
I'm currently using Fuseki to host a number of RDF datasets. If one
wants basic RDFS inference around a graph with good query performance,
what is the suggested configuration?
I'm currently using a:
<http://jena.hpl.hp.com/2003/RDFSExptRuleReasoner>
wrapped around a TDB graph and dataset. However, this seems to (a)
dramatically increase the memory requirements and (b) destroy the query
optimizer. Is there a different way to configure things to get RDFS
inference and better performance? I don't actually have the need to
track / eliminate inferred statements, so it would be ok to just forward
chain on insertion into the same store.
Thanks,
--Dave--
Re: RDFS inference in Fuseki w/ TDB
Posted by Dave Kolas <dk...@bbn.com>.
Andy,
Thanks for the reply.
By forward chain the data when loaded, I assume you mean manually doing
so on the client side before inserting?
I think the use case follows the general parameters you outline below.
The primary things really are just subClass and subProperty; I believe
those are the only elements that we're depending on now. The schema is
small, on the order of 50 classes. I will check out the linked project.
Thanks!
--Dave--
On 3/6/2016 11:28 AM, Andy Seaborne wrote:
> On 01/03/16 19:20, Dave Kolas wrote:
>> Hi there,
>>
>> I'm currently using Fuseki to host a number of RDF datasets. If one
>> wants basic RDFS inference around a graph with good query performance,
>> what is the suggested configuration?
>>
>> I'm currently using a:
>>
>> <http://jena.hpl.hp.com/2003/RDFSExptRuleReasoner>
>>
>> wrapped around a TDB graph and dataset. However, this seems to (a)
>> dramatically increase the memory requirements and (b) destroy the query
>> optimizer. Is there a different way to configure things to get RDFS
>> inference and better performance? I don't actually have the need to
>> track / eliminate inferred statements, so it would be ok to just forward
>> chain on insertion into the same store.
>>
>> Thanks,
>> --Dave--
>>
>>
>
> Hi Dave,
>
> In the current codebase the only two options are using there in-memory
> reasoner or forward-chaining the data when it is is loaded. A
> combination, whereby some inferences are done ahead of time and others
> done via the in-memory reasoner at runtime is possible - I don't know
> how much memory that saves though and it still might do bad things to
> optimization.
>
>
> Adding some support for RDFS to TDB would make a lot of sense.
> I had a go with [1].
>
> To scope that, could you give some background on your RDFS needs here,
> which as which parts of RDFS you use (and RDFS++ - all the single
> property inferences such as symmetric properties) and whether the
> assumption below fit your usage:
>
> 1/ It expands the subclass and subproperty chains once at startup so
> there is no path following at query time, just one hope for rdf:type.
>
> ?x rdf:type :C
> ==>
> ?x rdf:type ?X. ?X rdfs:"transitiveSubClassOf" :C .
>
> 2/ The schema is small - the workspace is in memory.
>
> 3/ The schema is fixed - any change would need to rebuild the sub*
> data structures but also ...
>
> 4/ schema and data are separate (this is not a core assumption; I
> wanted) to be be sure that worked well.
>
> 5/ No "messing with the furniture" i.e sub-properties of
> rdfs:subClassOf, rdfs:subPropertyOf, rdf:type don't trigger inference.
> I don't think it is fundamental in the design.
>
> Andy
>
>
> [1]
> https://github.com/afs/jena-inf-engine
>
>
Re: RDFS inference in Fuseki w/ TDB
Posted by Andy Seaborne <an...@apache.org>.
On 01/03/16 19:20, Dave Kolas wrote:
> Hi there,
>
> I'm currently using Fuseki to host a number of RDF datasets. If one
> wants basic RDFS inference around a graph with good query performance,
> what is the suggested configuration?
>
> I'm currently using a:
>
> <http://jena.hpl.hp.com/2003/RDFSExptRuleReasoner>
>
> wrapped around a TDB graph and dataset. However, this seems to (a)
> dramatically increase the memory requirements and (b) destroy the query
> optimizer. Is there a different way to configure things to get RDFS
> inference and better performance? I don't actually have the need to
> track / eliminate inferred statements, so it would be ok to just forward
> chain on insertion into the same store.
>
> Thanks,
> --Dave--
>
>
Hi Dave,
In the current codebase the only two options are using there in-memory
reasoner or forward-chaining the data when it is is loaded. A
combination, whereby some inferences are done ahead of time and others
done via the in-memory reasoner at runtime is possible - I don't know
how much memory that saves though and it still might do bad things to
optimization.
Adding some support for RDFS to TDB would make a lot of sense.
I had a go with [1].
To scope that, could you give some background on your RDFS needs here,
which as which parts of RDFS you use (and RDFS++ - all the single
property inferences such as symmetric properties) and whether the
assumption below fit your usage:
1/ It expands the subclass and subproperty chains once at startup so
there is no path following at query time, just one hope for rdf:type.
?x rdf:type :C
==>
?x rdf:type ?X. ?X rdfs:"transitiveSubClassOf" :C .
2/ The schema is small - the workspace is in memory.
3/ The schema is fixed - any change would need to rebuild the sub* data
structures but also ...
4/ schema and data are separate (this is not a core assumption; I
wanted) to be be sure that worked well.
5/ No "messing with the furniture" i.e sub-properties of
rdfs:subClassOf, rdfs:subPropertyOf, rdf:type don't trigger inference. I
don't think it is fundamental in the design.
Andy
[1]
https://github.com/afs/jena-inf-engine