diff options
Diffstat (limited to 'rules')
-rw-r--r-- | rules/.gitignore | 2 | ||||
-rw-r--r-- | rules/pom.xml | 72 | ||||
-rw-r--r-- | rules/src/main/java/io/trygvis/semantic/Main.java | 88 | ||||
-rw-r--r-- | rules/src/main/resources/log4j2.xml | 26 |
4 files changed, 188 insertions, 0 deletions
diff --git a/rules/.gitignore b/rules/.gitignore new file mode 100644 index 0000000..3a247a3 --- /dev/null +++ b/rules/.gitignore @@ -0,0 +1,2 @@ +logs +target diff --git a/rules/pom.xml b/rules/pom.xml new file mode 100644 index 0000000..ff7b8b3 --- /dev/null +++ b/rules/pom.xml @@ -0,0 +1,72 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <groupId>io.trygvis.semantic</groupId> + <artifactId>semantic-sandbox</artifactId> + <version>0.0.1-SNAPSHOT</version> + + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <maven.compiler.source>1.8</maven.compiler.source> + <maven.compiler.target>1.8</maven.compiler.target> + </properties> + + <dependencies> + <dependency> + <groupId>org.apache.logging.log4j</groupId> + <artifactId>log4j-api</artifactId> + <version>2.6.2</version> + </dependency> + <dependency> + <groupId>org.apache.logging.log4j</groupId> + <artifactId>log4j-core</artifactId> + <version>2.6.2</version> + </dependency> + <dependency> + <groupId>org.apache.logging.log4j</groupId> + <artifactId>log4j-slf4j-impl</artifactId> + <version>2.6.2</version> + </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.12</version> + <scope>test</scope> + </dependency> + <!-- https://mvnrepository.com/artifact/org.apache.jena/apache-jena-libs --> + <dependency> + <groupId>org.apache.jena</groupId> + <artifactId>apache-jena-libs</artifactId> + <version>3.8.0</version> + <type>pom</type> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>appassembler-maven-plugin</artifactId> + <version>1.10</version> + <executions> + <execution> + <id>assemble</id> + <phase>package</phase> + <goals> + <goal>assemble</goal> + </goals> + </execution> + </executions> + <configuration> + <programs> + <program> + <mainClass>io.trygvis.semantic.Main</mainClass> + <id>rules</id> + </program> + </programs> + </configuration> + </plugin> + </plugins> + </build> +</project> diff --git a/rules/src/main/java/io/trygvis/semantic/Main.java b/rules/src/main/java/io/trygvis/semantic/Main.java new file mode 100644 index 0000000..9c8e9c6 --- /dev/null +++ b/rules/src/main/java/io/trygvis/semantic/Main.java @@ -0,0 +1,88 @@ +package io.trygvis.semantic; + +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.List; +import java.util.Iterator; + +import org.apache.jena.dboe.base.file.Location; +import org.apache.jena.query.Dataset; +import org.apache.jena.query.QueryExecution; +import org.apache.jena.query.QueryExecutionFactory; +import org.apache.jena.query.QuerySolution; +import org.apache.jena.query.ReadWrite; +import org.apache.jena.query.ResultSet; +import org.apache.jena.rdf.model.InfModel; +import org.apache.jena.rdf.model.Model; +import org.apache.jena.rdf.model.ModelFactory; +import org.apache.jena.rdf.model.Property; +import org.apache.jena.rdf.model.RDFNode; +import org.apache.jena.rdf.model.Resource; +import org.apache.jena.rdf.model.Statement; +import org.apache.jena.rdf.model.StmtIterator; +import org.apache.jena.reasoner.Derivation; +import org.apache.jena.reasoner.Reasoner; +import org.apache.jena.reasoner.rulesys.Builtin; +import org.apache.jena.reasoner.rulesys.BuiltinRegistry; +import org.apache.jena.reasoner.rulesys.GenericRuleReasoner; +import org.apache.jena.reasoner.rulesys.MapBuiltinRegistry; +import org.apache.jena.reasoner.rulesys.Rule; +import org.apache.jena.riot.RDFDataMgr; +import org.apache.jena.riot.RDFFormat; +import org.apache.jena.tdb2.TDB2Factory; +import org.apache.jena.update.UpdateExecutionFactory; +import org.apache.jena.update.UpdateFactory; +import org.apache.jena.update.UpdateProcessor; +import org.apache.jena.update.UpdateRequest; +import org.apache.jena.util.PrintUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.slf4j.Marker; +import org.slf4j.MarkerFactory; + +public class Main { + private static Logger logger = LoggerFactory.getLogger(Main.class); + // Why This Failure marker + private static final Marker WTF_MARKER = MarkerFactory.getMarker("WTF"); + + public static void main(String[] args) { + try { + Path path = Paths.get(".").toAbsolutePath().normalize(); + + // Load RDF data + String data = Paths.get(args[0]).toUri().toString(); // path.toFile().getAbsolutePath() + "/src/main/resources/data1.ttl"; + Model model = ModelFactory.createDefaultModel(); + model.read(data); + + // Load rules + String rules = args[1]; // path.toFile().getAbsolutePath() + "/src/main/resources/student1.rules"; + Reasoner reasoner = new GenericRuleReasoner(Rule.rulesFromURL(rules)); + + InfModel infModel = ModelFactory.createInfModel(reasoner, model); + infModel.setDerivationLogging(true); + infModel.validate(); + List<Statement> stmts = infModel.listStatements().toList(); + + Model dm = infModel.getDeductionsModel(); + + /* + if (true) { + logger.info("# statements = " + stmts.size()); + logger.info("dm.size() = " + dm.size()); + } else { + for (StmtIterator i = infModel.listStatements(); i.hasNext(); ) { + Statement stmt = i.nextStatement(); + logger.trace("Statememt = " + PrintUtil.print(stmt)); + } + } + */ + logger.info("Inferred data"); + for (StmtIterator i = dm.listStatements(); i.hasNext(); ) { + Statement stmt = i.nextStatement(); + logger.trace("Statememt = " + PrintUtil.print(stmt)); + } + } catch (Throwable t) { + logger.error(WTF_MARKER, t.getMessage(), t); + } + } +} diff --git a/rules/src/main/resources/log4j2.xml b/rules/src/main/resources/log4j2.xml new file mode 100644 index 0000000..e4f29d0 --- /dev/null +++ b/rules/src/main/resources/log4j2.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Configuration package="log4j.test" status="WARN"> +<Appenders> + <Console name="Console" target="SYSTEM_OUT"> + <PatternLayout pattern="%markerSimpleName %-5p %C.%M():%L - %msg %ex{full}%n"/> + </Console> + <File name="Log" fileName="./logs/App.log"> + <PatternLayout> + <Pattern>%markerSimpleName %-5p %C.%M():%L - %msg %ex{full}%n</Pattern> + </PatternLayout> + </File> +</Appenders> +<Loggers> + <Root level="trace"> + <AppenderRef ref="Console"/> + <AppenderRef ref="Log"/> + </Root> + <!--<Logger name="root" level="trace" additivity="false"> + <AppenderRef ref="Console"/> + </Logger> + <Logger name="root" level="trace" additivity="false"> + <AppenderRef ref="Console"/> + <AppenderRef ref="Log"/> + </Logger>--> +</Loggers> +</Configuration> |