Hi,

I managed to create a custom dataset and get it registered. It seems to
work fine but apparently it is an in memory dataset. Rules get reloaded
when I change the rule set.
How should I make sure it is a tdb2 persistent one?

Johan

Op vr 30 okt. 2020 om 23:08 schreef Johan Kumps <[email protected]>:

> Barry,
>
> Would you mind to share your CustomDatasetAssembler and Fuseki turtle
> config file?
> I'm struggling to find out how to make Jena aware of my custom dataset
> implementation.
>
> Thank you very much!
>
> Johan,
>
> Op vr 30 okt. 2020 om 20:10 schreef Johan Kumps <[email protected]>:
>
>> Barry,
>>
>> Thanks for the pointer. I'll try that out!
>>
>> You're right we already attended the same Interconnect call's :). I
>> emailed you about SparQL+ :)
>>
>> Johan,
>>
>> Op vr 30 okt. 2020 om 18:35 schreef Nouwt, B. (Barry)
>> <[email protected]>:
>>
>>> Hi Johan, I can give some implementation pointers.
>>>
>>> We implemented our own dataset:
>>>
>>> public class CustomDataset extends DatasetImpl { ... }
>>>
>>> And in this dataset we periodically update the rules like this:
>>>
>>> public void updateRules(List<Rule> rules)
>>> {
>>>         Model m = this.getDefaultModel();
>>>         InfGraph ig = (InfGraph) m.getGraph();
>>>         Graph rawGraph = ig.getRawGraph();
>>>         Reasoner r = ig.getReasoner();
>>>         if (r instanceof GenericRuleReasoner) {
>>>                 GenericRuleReasoner gr = (GenericRuleReasoner) r;
>>>                 List<Rule> oldRules = gr.getRules();
>>>                 LOG.trace("Old rules: {}", oldRules);
>>>                 if (!oldRules.equals(rules)) {
>>>                 LOG.trace("New rules: {}", rules);
>>>                 gr.setRules(rules);
>>>                 InfModel inf = ModelFactory.createInfModel(gr,
>>> ModelFactory.createModelForGraph(rawGraph));
>>>                 this.setDefaultModel(inf);
>>>         }
>>> }
>>>
>>> Then we use a CustomDatasetAssembler (i.e.
>>> https://jena.apache.org/documentation/assembler/inside-assemblers.html)
>>> to configure our dataset using a Fuseki Turtle configuration file:
>>>
>>> ...
>>>
>>> ex:CustomDataset ja:assembler "org.test.CustomDatasetAssembler" .
>>>
>>> ex:dataset rdf:type ex:CustomDataset ;
>>>         ja:defaultGraph ke:infGraph .
>>>
>>> ...
>>>
>>> This is probably not the ideal way, but it works good enough for our
>>> non-production environment.
>>>
>>> By the way, I think I recognize your name from the InterConnect project.
>>>
>>> Kind regards, Barry
>>>
>>> -----Original Message-----
>>> From: Johan Kumps <[email protected]>
>>> Sent: zondag 25 oktober 2020 11:47
>>> To: [email protected]
>>> Subject: Re: Add rules at runtime
>>>
>>> Hi Barry,
>>>
>>> Could you share your code please?
>>>
>>> Thanks!
>>>
>>> Op di 13 okt. 2020 om 08:30 schreef Nouwt, B. (Barry)
>>> <[email protected]>:
>>>
>>> > Hi Johan, you can definitely reload the rules in Apache Jena Fuseki,
>>> > but it requires programming. I did it by creating a custom Dataset
>>> > implementation (which I configured using an Assembler configuration
>>> > file) that periodically reloads the rules, but that might not be the
>>> easiest way.
>>> > Regards, Barry
>>> >
>>> > -----Original Message-----
>>> > From: Johan Kumps <[email protected]>
>>> > Sent: maandag 12 oktober 2020 22:16
>>> > To: [email protected]
>>> > Subject: Re: Add rules at runtime
>>> >
>>> > Hi,
>>> >
>>> > I understand that within Jena rules and data are stored separately but
>>> > the question is whether there is a possibility to reload rules in the
>>> > given file. If so it would be possible to reload the rule set without
>>> > having to restart the server.
>>> > Any ideas?
>>> >
>>> > Johan,
>>> >
>>> > Op ma 5 okt. 2020 om 14:12 schreef Nouwt, B. (Barry)
>>> > <[email protected]>:
>>> >
>>> > > Hi Johan,
>>> > >
>>> > > I do not think Apache Jena Fuseki supports uploading a rule file as
>>> > > you would do with data. Apache Jena rules (
>>> > > https://jena.apache.org/documentation/inference/) can only be set
>>> as
>>> > > part of the configuration of a dataset, I think.
>>> > >
>>> > > However, if you use another type of constraints/rules (i.e. SWRL or
>>> > > OWL Restrictions), you can maybe upload those as part of your data
>>> > > (as they are part of you ontology, I think). If you then use a
>>> > > reasoner that supports those constraints/rules (Pellet maybe?), it
>>> > > will probably take them into account.
>>> > >
>>> > > Hope this helps!
>>> > >
>>> > > Regards, Barry
>>> > >
>>> > > -----Original Message-----
>>> > > From: Johan Kumps <[email protected]>
>>> > > Sent: maandag 5 oktober 2020 13:37
>>> > > To: [email protected]
>>> > > Subject: Add rules at runtime
>>> > >
>>> > > Hi all,
>>> > >
>>> > > Is it possible to add rules to Jena at runtime or is it only
>>> > > possible to add rules via a file and restart the server?
>>> > >
>>> > > It would be very nice if you could upload a rule the same way as you
>>> > > can do to add data to a dataset.
>>> > >
>>> > > Kind regards,
>>> > > Johan,
>>> > > This message may contain information that is not intended for you.
>>> > > If you are not the addressee or if this message was sent to you by
>>> > > mistake, you are requested to inform the sender and delete the
>>> > > message. TNO accepts no liability for the content of this e-mail,
>>> > > for the manner in which you use it and for damage of any kind
>>> > > resulting from the risks inherent to the electronic transmission of
>>> messages.
>>> > >
>>> >
>>>
>>

Reply via email to