[TASK] Add query that successfully uses background knowledge.

This commit is contained in:
Jan Philipp Timme 2016-08-17 14:55:57 +02:00
parent 137425b81a
commit 9c8d49c6e8
5 changed files with 30 additions and 11 deletions

View File

@ -10,7 +10,7 @@
<!-- Car data --> <!-- Car data -->
<owl:NamedIndividual rdf:about="http://example.org/carSim/objects/Car#0"> <owl:NamedIndividual rdf:about="http://example.org/carSim/objects/Car#0">
<rdf:type rdf:resource="http://simontology.org/Car"/> <rdf:type rdf:resource="http://example.org/carSim/carSimulationOntology#Car"/>
<simontology:isDrivenBy rdf:resource="http://example.org/carSim/objects/Driver#0"/> <simontology:isDrivenBy rdf:resource="http://example.org/carSim/objects/Driver#0"/>
<simontology:maximumMotorRPM rdf:datatype="xsd:integer">3500</simontology:maximumMotorRPM> <simontology:maximumMotorRPM rdf:datatype="xsd:integer">3500</simontology:maximumMotorRPM>
<simontology:maximumTirePressure rdf:datatype="xsd:double">3.5</simontology:maximumTirePressure> <simontology:maximumTirePressure rdf:datatype="xsd:double">3.5</simontology:maximumTirePressure>
@ -23,11 +23,11 @@
<!-- Driver data --> <!-- Driver data -->
<owl:NamedIndividual rdf:about="http://example.org/carSim/objects/Driver#0"> <owl:NamedIndividual rdf:about="http://example.org/carSim/objects/Driver#0">
<rdf:type rdf:resource="http://simontology.org/Driver"/> <rdf:type rdf:resource="http://example.org/carSim/carSimulationOntology#Driver"/>
<simontology:drives rdf:resource="http://example.org/carSim/objects/Car#0"/> <simontology:drives rdf:resource="http://example.org/carSim/objects/Car#0"/>
<simontology:hasName rdf:datatype="xsd:string">Max</simontology:hasName> <simontology:hasName rdf:datatype="xsd:string">Max</simontology:hasName>
<simontology:hasPhoneNumber rdf:datatype="xsd:string">+49 12345</simontology:hasPhoneNumber> <simontology:hasPhoneNumber rdf:datatype="xsd:string">+49 12345</simontology:hasPhoneNumber>
<simontology:hasDriverLicense rdf:datatype="xsd:string">B</simontology:hasDriverLicense> <simontology:hasDriverLicense rdf:datatype="xsd:string">B</simontology:hasDriverLicense>
</owl:NamedIndividual> </owl:NamedIndividual>
</rdf:RDF> </rdf:RDF>

View File

@ -36,7 +36,7 @@ public class Main {
// Add static knowledge into local graph from file // Add static knowledge into local graph from file
try { try {
engine.putStaticNamedModel("http://jpt.lu/carSimKnowledge", CsparqlUtils.serializeRDFFile("data/carData.rdf")); engine.putStaticNamedModel("http://example.org/carSimKnowledgeGraph", CsparqlUtils.serializeRDFFile("data/carData.rdf"));
} catch (Exception e) { } catch (Exception e) {
logger.error(e.toString()); logger.error(e.toString());
logger.error(e.getStackTrace().toString()); logger.error(e.getStackTrace().toString());
@ -64,7 +64,8 @@ public class Main {
simulationThread.start(); simulationThread.start();
// Now build a query to run - interchangeable // Now build a query to run - interchangeable
String query = Main.getSPO(); //String query = Main.getSPO();
String query = RentACarSimulation.getEventUsingBackgroundKnowledge();
// Create a result proxy by registering the query at the engine // Create a result proxy by registering the query at the engine
CsparqlQueryResultProxy resultProxy = null; CsparqlQueryResultProxy resultProxy = null;
@ -120,7 +121,7 @@ public class Main {
+ "FROM STREAM <"+RentACarSimulation.CAR_STREAM_IRI+"> [RANGE 5s STEP 1s] " + "FROM STREAM <"+RentACarSimulation.CAR_STREAM_IRI+"> [RANGE 5s STEP 1s] "
+ "FROM STREAM <"+RentACarSimulation.DRIVER_STREAM_IRI+"> [RANGE 15s STEP 1s] " + "FROM STREAM <"+RentACarSimulation.DRIVER_STREAM_IRI+"> [RANGE 15s STEP 1s] "
+ "WHERE { " + "WHERE { "
+ " ?s a <http://jpt.lu/carSimulationOntology#CarStatusEvent> . " + " ?s a <"+RentACarSimulation.BASE_ONTOLOGY_IRI+"CarStatusEvent> . "
+ " ?s ?p ?o . " + " ?s ?p ?o . "
+ "}"; + "}";
} }
@ -129,7 +130,7 @@ public class Main {
return "REGISTER QUERY BasicCarInfo AS " return "REGISTER QUERY BasicCarInfo AS "
+ "PREFIX f: <http://larkc.eu/csparql/sparql/jena/ext#> " + "PREFIX f: <http://larkc.eu/csparql/sparql/jena/ext#> "
+ "PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> " + "PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> "
+ "PREFIX car: <http://myexample.org/car#> " + "PREFIX car: <http://example.org/car#> "
+ "SELECT ?car ?locked ?on ?speed ?rpm ?handbrake ?tirePressure " + "SELECT ?car ?locked ?on ?speed ?rpm ?handbrake ?tirePressure "
+ "FROM STREAM <"+RentACarSimulation.CAR_STREAM_IRI+"> [RANGE 5s STEP 1s] " + "FROM STREAM <"+RentACarSimulation.CAR_STREAM_IRI+"> [RANGE 5s STEP 1s] "
+ "FROM STREAM <"+RentACarSimulation.DRIVER_STREAM_IRI+"> [RANGE 15s STEP 1s] " + "FROM STREAM <"+RentACarSimulation.DRIVER_STREAM_IRI+"> [RANGE 15s STEP 1s] "

View File

@ -48,7 +48,7 @@ public class Car {
public Car(int id) { public Car(int id) {
this.id = id; this.id = id;
this.IRI = RentACarSimulation.BASE_OBJECT_IRI + "/car"; this.IRI = RentACarSimulation.BASE_OBJECT_IRI + "/Car";
this.quads = new ArrayList<RdfQuadruple>(); this.quads = new ArrayList<RdfQuadruple>();
this.CAR_TYPE = RandomHelper.nextInt(2); this.CAR_TYPE = RandomHelper.nextInt(2);
this.initializeCarType(this.CAR_TYPE); this.initializeCarType(this.CAR_TYPE);

View File

@ -32,7 +32,7 @@ public class Driver {
public Driver(int id, CarPool carPool) { public Driver(int id, CarPool carPool) {
this.id = id; this.id = id;
this.IRI = RentACarSimulation.BASE_OBJECT_IRI + "/driver"; this.IRI = RentACarSimulation.BASE_OBJECT_IRI + "/Driver";
this.carPool = carPool; this.carPool = carPool;
this.car = null; this.car = null;
this.quads = new ArrayList<RdfQuadruple>(); this.quads = new ArrayList<RdfQuadruple>();

View File

@ -110,8 +110,8 @@ public class RentACarSimulation implements Runnable {
+ "FROM STREAM <"+RentACarSimulation.CAR_STREAM_IRI+"> [RANGE 5s STEP 1s] " + "FROM STREAM <"+RentACarSimulation.CAR_STREAM_IRI+"> [RANGE 5s STEP 1s] "
+ "FROM STREAM <"+RentACarSimulation.DRIVER_STREAM_IRI+"> [RANGE 15s STEP 1s] " + "FROM STREAM <"+RentACarSimulation.DRIVER_STREAM_IRI+"> [RANGE 15s STEP 1s] "
+ "WHERE { " + "WHERE { "
+ " ?e rdf:type car:Event . " + " ?e rdf:type car:CarStatusEvent . "
+ " ?e car:subject ?car . " + " ?e car:relatedCar ?car . "
+ " ?e car:locked ?locked . " + " ?e car:locked ?locked . "
+ " ?e car:motorOn ?on . " + " ?e car:motorOn ?on . "
+ " ?e car:speed ?speed . " + " ?e car:speed ?speed . "
@ -124,4 +124,22 @@ public class RentACarSimulation implements Runnable {
+ "}"; + "}";
} }
public static String getEventUsingBackgroundKnowledge() {
return "REGISTER QUERY getEventsCombinedWithBackgroundKnowledge AS "
+ "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> "
+ "PREFIX f: <http://larkc.eu/csparql/sparql/jena/ext#> "
+ "PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> "
+ "PREFIX car: <"+RentACarSimulation.BASE_ONTOLOGY_IRI+"> "
+ "SELECT ?car ?driverName ?driverPhone "
+ "FROM STREAM <"+RentACarSimulation.CAR_STREAM_IRI+"> [RANGE 5s STEP 1s] "
+ "FROM STREAM <"+RentACarSimulation.DRIVER_STREAM_IRI+"> [RANGE 15s STEP 1s] "
+ "FROM <http://example.org/carSimKnowledgeGraph> "
+ "WHERE { "
+ " ?e rdf:type car:CarStatusEvent . "
+ " ?e car:relatedCar ?car . "
+ " ?car car:isDrivenBy ?driver . "
+ " ?driver car:hasName ?driverName . "
+ " ?driver car:hasPhoneNumber ?driverPhone . "
+ "}";
}
} }