Initial support for jena rules. not working.

This commit is contained in:
Maschell 2018-01-02 14:10:46 +01:00
parent 31b3a144fc
commit 2ab7204966
4 changed files with 30 additions and 5 deletions

View File

@ -30,7 +30,8 @@
:Switch a :PortableGameConsole ; :Switch a :PortableGameConsole ;
:madeBy :Nintendo ; :madeBy :Nintendo ;
:releaseYear 2017 ; :releaseYear 2017 ;
rev:hasReview :SwitchReviewByJPT . rev:hasReview :SwitchReviewByJPT;
:hasPrice 329 .
:Playstation4 a :GameConsole . :Playstation4 a :GameConsole .
@ -44,4 +45,4 @@
rev:reviewer :JPT ; rev:reviewer :JPT ;
rev:text "Yet another gaming console. I lost a tetris game once. Meh."^^xsd:string . rev:text "Yet another gaming console. I lost a tetris game once. Meh."^^xsd:string .
:Switch :hasPrice "329,00"^^:PriceEur .

17
data/jenarules.txt Normal file
View File

@ -0,0 +1,17 @@
@prefix : <http://example.com/ins_uebung/#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix rev: <http://purl.org/stuff/rev#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
[rule1: (?con rdf:type :GameConsole) (?con :predecessorOfConsole ?otherCon)
noValue(?otherCon :successorOfConsole ?con)
-> (?otherCon :successorOfConsole ?con)]
[rule2: (?con :hasPrice ?someValue)
-> remove(?con :hasPrice ?someValue)]
[rule3: (?con rev:hasReview ?rev) (?rev rev:reviewer ?reviewer)
-> (?reviewer :hasReviewedConsole ?con)]

View File

@ -49,7 +49,7 @@
:hasPrice rdf:type rdf:Property ; :hasPrice rdf:type rdf:Property ;
rdfs:domain :GameConsole ; rdfs:domain :GameConsole ;
rdfs:range :xsd:string . rdfs:range xsd:int .
# rdfs:Datatype # rdfs:Datatype
:PriceEur rdf:type rdfs:Datatype . :PriceEur rdf:type rdfs:Datatype .

View File

@ -22,6 +22,8 @@ import org.apache.jena.reasoner.Reasoner;
import org.apache.jena.reasoner.ReasonerRegistry; import org.apache.jena.reasoner.ReasonerRegistry;
import org.apache.jena.reasoner.ValidityReport; import org.apache.jena.reasoner.ValidityReport;
import org.apache.jena.reasoner.ValidityReport.Report; import org.apache.jena.reasoner.ValidityReport.Report;
import org.apache.jena.reasoner.rulesys.GenericRuleReasoner;
import org.apache.jena.reasoner.rulesys.Rule;
import org.apache.jena.util.FileManager; import org.apache.jena.util.FileManager;
import org.apache.jena.util.PrintUtil; import org.apache.jena.util.PrintUtil;
@ -45,12 +47,17 @@ public class App {
// Let's create an owl reasoner // Let's create an owl reasoner
Reasoner reasoner = ReasonerRegistry.getOWLReasoner(); Reasoner reasoner = ReasonerRegistry.getOWLReasoner();
reasoner = reasoner.bindSchema(tboxModel); reasoner = reasoner.bindSchema(tboxModel);
OntModelSpec ontModelSpec = OntModelSpec.OWL_DL_MEM_RULE_INF; //OntModelSpec ontModelSpec = OntModelSpec.OWL_DL_MEM_RULE_INF;
ontModelSpec.setReasoner(reasoner); //ontModelSpec.setReasoner(reasoner);
InfModel infModel = ModelFactory.createInfModel(reasoner, aboxModel); InfModel infModel = ModelFactory.createInfModel(reasoner, aboxModel);
validate(infModel);
reasoner = new GenericRuleReasoner(Rule.rulesFromURL("data/jenarules.txt"));
infModel = ModelFactory.createInfModel(reasoner, aboxModel);
validate(infModel); validate(infModel);
printResource(infModel, "JPT");
printResource(infModel, "Wii"); printResource(infModel, "Wii");
printResource(infModel, "Wii_u"); printResource(infModel, "Wii_u");
printResource(infModel, "Switch"); printResource(infModel, "Switch");