On 17/11/12 19:23, Marco Knietzsch wrote:
Date: Sat, 17 Nov 2012 19:09:17 +0000
From: [email protected]
To: [email protected]
Subject: Re: Custom rule file - prefix to local file?
On 17/11/12 18:32, Marco Knietzsch wrote:
Hi, I want to have a custom reasoner that uses a local file to make inferences,
without having to set up a server. Is this possible?I thought something like this
would work:@prefix this: <file:///C:/myontologgy.rdf#>
But it doesnt. Can someone help?ThxMarco
Sorry but it is hard to understand your question. In particular I've no
idea *where* you are putting that @prefix declaration, and what you are
expecting it to do.
If by "customer reasoner" you mean the GenericRuleReasoner and by "uses
a local file" you mean a file containing Jena Rules then sure that's
possible.
If you are doing all this in Java then when you create the reasoner
instance you do something like:
List<Rule> rules = Rule.rulesFromURL("file:myrules.rules");
GenericRuleReasoner reasoner = new GenericRuleReasoner(rules);
If you are doing this in an assembler definition then that is possible
and should be described in the assembler documentation.
Dave
OK, I try to make myself clearer. I define my reasoner like this:FileReader f =
new FileReader (ruleFile);BufferedReader b = new BufferedReader (f);Rule.Parser
p = Rule.rulesParserFromReader (b);java.util.List rules = Rule.parseRules
(p);Reasoner reasoner = new GenericRuleReasoner (rules);OntModelSpec s = new
OntModelSpec (OntModelSpec.OWL_MEM);s.setReasoner (reasoner);
So it gets the rules from "ruleFile". The file looks like this:@prefix this:
<file:///C:/trpg.rdf#>@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>@prefix owl:
<http://www.w3.org/2002/07/owl#>@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
[inverse: (?x owl:inverseOf ?y) (?a ?x ?b) -> (?b ?y ?a)] <-- works![rule: (?x
this:property ?y) -> something] <-- doesnt work
In the rules I want to access properties from "this", but it doesnt work. It
works fine for owl and the others. Hope thats clear enough.
Marco
Probably a mismatch in definition of this. Without seeing your data, how
you are reading your data and your rule file (the above has no white
spaces and is missing terminators and so won't parse) it to say more
than that.
General advice is to avoid using things like file: for namespaces.
Invent a base URI for your data, declare that in your data file and in
your rule file. The data doesn't have to physically be at that URI for
the reasoner to work.
Dave