From 2d8afc3a50384d2aea6c97958a814fedc7b9bd40 Mon Sep 17 00:00:00 2001 From: Federico Igne Date: Mon, 16 Nov 2020 14:30:46 +0000 Subject: Change "internal:" prefix to "rsa:" --- src/main/scala/rsacomb/FilteringProgram.scala | 60 +++++++++++----------- src/main/scala/rsacomb/Main.scala | 21 ++++++-- .../scala/rsacomb/RDFoxClassExprConverter.scala | 4 +- src/main/scala/rsacomb/RSA.scala | 10 ++-- src/main/scala/rsacomb/RSAOntology.scala | 30 +++++------ src/test/scala/rsacomb/OWLAxiomSpec.scala | 6 +-- src/test/scala/rsacomb/OWLClassSpec.scala | 6 +-- 7 files changed, 74 insertions(+), 63 deletions(-) diff --git a/src/main/scala/rsacomb/FilteringProgram.scala b/src/main/scala/rsacomb/FilteringProgram.scala index e9a69ff..44960e5 100644 --- a/src/main/scala/rsacomb/FilteringProgram.scala +++ b/src/main/scala/rsacomb/FilteringProgram.scala @@ -62,7 +62,7 @@ class FilteringProgram(query: SelectQuery, constants: List[Term]) this.generateFilteringProgram().map(reifyRule) ++ facts private def predNI(t: Term): TupleTableAtom = - TupleTableAtom.rdf(t, IRI.RDF_TYPE, RSA.internal("NI")) + TupleTableAtom.rdf(t, IRI.RDF_TYPE, RSA.rsa("NI")) /* NOTE: we are restricting to queries that contain conjunctions of * atoms for the time being. This might need to be reviewed in the @@ -92,39 +92,39 @@ class FilteringProgram(query: SelectQuery, constants: List[Term]) def not(atom: TupleTableAtom): BodyFormula = Negation.create(atom) val predQM = TupleTableAtom.create( - TupleTableName.create(RSA.internal("QM").getIRI), + TupleTableName.create(RSA.rsa("QM").getIRI), (answer ++ bounded): _* ) def predID(t1: Term, t2: Term) = TupleTableAtom.create( - TupleTableName.create(RSA.internal("ID").getIRI), + TupleTableName.create(RSA.rsa("ID").getIRI), (answer ++ bounded).appended(t1).appended(t2): _* ) def predNAMED(t1: Term): TupleTableAtom = - TupleTableAtom.rdf(t1, IRI.RDF_TYPE, RSA.internal("NAMED")) + TupleTableAtom.rdf(t1, IRI.RDF_TYPE, RSA.rsa("NAMED")) def predTQ(sx: String, t1: Term, t2: Term) = TupleTableAtom.create( - TupleTableName.create(RSA.internal(s"TQ_$sx").getIRI), + TupleTableName.create(RSA.rsa(s"TQ_$sx").getIRI), (answer ++ bounded).appended(t1).appended(t2): _* ) def predAQ(sx: String, t1: Term, t2: Term) = TupleTableAtom.create( - TupleTableName.create(RSA.internal(s"AQ_$sx").getIRI), + TupleTableName.create(RSA.rsa(s"AQ_$sx").getIRI), (answer ++ bounded).appended(t1).appended(t2): _* ) val predFK = TupleTableAtom.create( - TupleTableName.create(RSA.internal("FK").getIRI), + TupleTableName.create(RSA.rsa("FK").getIRI), (answer ++ bounded): _* ) val predSP = TupleTableAtom.create( - TupleTableName.create(RSA.internal("SP").getIRI), + TupleTableName.create(RSA.rsa("SP").getIRI), (answer ++ bounded): _* ) val predANS = TupleTableAtom.create( - TupleTableName.create(RSA.internal("ANS").getIRI), + TupleTableName.create(RSA.rsa("ANS").getIRI), answer: _* ) @@ -135,7 +135,7 @@ class FilteringProgram(query: SelectQuery, constants: List[Term]) val r3a = for ((v, i) <- bounded.zipWithIndex) yield Rule.create( - predID(RSA.internal(i), RSA.internal(i)), + predID(RSA.rsa(i), RSA.rsa(i)), predQM, not(predNI(v)) ) @@ -160,8 +160,8 @@ class FilteringProgram(query: SelectQuery, constants: List[Term]) role1 suffix "f", role2 suffix "f", predID( - RSA.internal(bounded.indexOf(role1.getArguments.get(2))), - RSA.internal(bounded.indexOf(role2.getArguments.get(2))) + RSA.rsa(bounded.indexOf(role1.getArguments.get(2))), + RSA.rsa(bounded.indexOf(role2.getArguments.get(2))) ), not( TupleTableAtom.rdf( @@ -181,8 +181,8 @@ class FilteringProgram(query: SelectQuery, constants: List[Term]) role1 suffix "f", role2 suffix "b", predID( - RSA.internal(bounded.indexOf(role1.getArguments.get(2))), - RSA.internal(bounded.indexOf(role2.getArguments.get(0))) + RSA.rsa(bounded.indexOf(role1.getArguments.get(2))), + RSA.rsa(bounded.indexOf(role2.getArguments.get(0))) ), not( TupleTableAtom.rdf( @@ -202,8 +202,8 @@ class FilteringProgram(query: SelectQuery, constants: List[Term]) role1 suffix "b", role2 suffix "b", predID( - RSA.internal(bounded.indexOf(role1.getArguments.get(0))), - RSA.internal(bounded.indexOf(role2.getArguments.get(0))) + RSA.rsa(bounded.indexOf(role1.getArguments.get(0))), + RSA.rsa(bounded.indexOf(role2.getArguments.get(0))) ), not( TupleTableAtom.rdf( @@ -228,14 +228,14 @@ class FilteringProgram(query: SelectQuery, constants: List[Term]) if bounded contains role2arg2 } yield Rule.create( predID( - RSA.internal(bounded indexOf role1arg0), - RSA.internal(bounded indexOf role2arg0) + RSA.rsa(bounded indexOf role1arg0), + RSA.rsa(bounded indexOf role2arg0) ), role1 suffix "f", role2 suffix "f", predID( - RSA.internal(bounded indexOf role1arg2), - RSA.internal(bounded indexOf role2arg2) + RSA.rsa(bounded indexOf role1arg2), + RSA.rsa(bounded indexOf role2arg2) ), TupleTableAtom.rdf(role1arg0, RSA.EquivTo, role2arg0), not(predNI(role1arg0)) @@ -253,14 +253,14 @@ class FilteringProgram(query: SelectQuery, constants: List[Term]) if bounded contains role2arg2 } yield Rule.create( predID( - RSA.internal(bounded indexOf role1arg0), - RSA.internal(bounded indexOf role2arg2) + RSA.rsa(bounded indexOf role1arg0), + RSA.rsa(bounded indexOf role2arg2) ), role1 suffix "f", role2 suffix "b", predID( - RSA.internal(bounded indexOf role1arg2), - RSA.internal(bounded indexOf role2arg0) + RSA.rsa(bounded indexOf role1arg2), + RSA.rsa(bounded indexOf role2arg0) ), TupleTableAtom.rdf(role1arg0, RSA.EquivTo, role2arg2), not(predNI(role1arg0)) @@ -278,14 +278,14 @@ class FilteringProgram(query: SelectQuery, constants: List[Term]) if bounded contains role2arg2 } yield Rule.create( predID( - RSA.internal(bounded indexOf role1arg2), - RSA.internal(bounded indexOf role2arg2) + RSA.rsa(bounded indexOf role1arg2), + RSA.rsa(bounded indexOf role2arg2) ), role1 suffix "b", role2 suffix "b", predID( - RSA.internal(bounded indexOf role1arg0), - RSA.internal(bounded indexOf role2arg0) + RSA.rsa(bounded indexOf role1arg0), + RSA.rsa(bounded indexOf role2arg0) ), TupleTableAtom.rdf(role1arg2, RSA.EquivTo, role2arg2), not(predNI(role1arg2)) @@ -303,11 +303,11 @@ class FilteringProgram(query: SelectQuery, constants: List[Term]) predAQ(sx, Variable.create("V"), Variable.create("W")), role suffix sx, predID( - RSA.internal(bounded indexOf arg0), + RSA.rsa(bounded indexOf arg0), Variable.create("V") ), predID( - RSA.internal(bounded indexOf arg2), + RSA.rsa(bounded indexOf arg2), Variable.create("W") ) ) diff --git a/src/main/scala/rsacomb/Main.scala b/src/main/scala/rsacomb/Main.scala index 596ef33..3963981 100644 --- a/src/main/scala/rsacomb/Main.scala +++ b/src/main/scala/rsacomb/Main.scala @@ -91,7 +91,7 @@ object RSAComb extends App { // Step 2. Computing the canonical model val nis = { val query = - "SELECT ?Y WHERE { ?X internal:EquivTo ?Y ; a internal:NAMED . }" + "SELECT ?Y WHERE { ?X rsa:EquivTo ?Y ; a rsa:NAMED . }" val cursor = data.createCursor( RSA.Prefixes, @@ -126,7 +126,7 @@ object RSAComb extends App { } query ++= " WHERE {" for (i <- 0 until arity) { - query ++= s" ?S internal:${pred}_$i ?X$i ." + query ++= s" ?S rsa:${pred}_$i ?X$i ." } query ++= " }" // Collect answers @@ -159,7 +159,7 @@ object RSAComb extends App { RDFoxUtil.submitQuery( data, RSA.Prefixes, - "SELECT ?X { ?X a internal:NAMED }", + "SELECT ?X { ?X a rsa:NAMED }", 1 ) @@ -167,7 +167,7 @@ object RSAComb extends App { RDFoxUtil.submitQuery( data, RSA.Prefixes, - "SELECT ?X { ?X a internal:NI }", + "SELECT ?X { ?X a rsa:NI }", 1 ) @@ -179,7 +179,7 @@ object RSAComb extends App { RDFoxUtil.submitQuery( data, RSA.Prefixes, - "SELECT ?X ?Y { ?X internal:EquivTo ?Y }", + "SELECT ?X ?Y { ?X rsa:EquivTo ?Y }", 2 ) @@ -200,6 +200,17 @@ object RSAComb extends App { println("\nSpurious answers") retrieveInstances("SP", filter.variables.length) + { + val cursor = data.createCursor( + RSA.Prefixes, + "ASK { :a a :D }", + new HashMap[String, String]() + ); + var mul = cursor.open() + println(s"Answer: ${mul > 0}") + cursor.close(); + } + // Close connection to RDFox RDFoxUtil.closeConnection(server, data) } diff --git a/src/main/scala/rsacomb/RDFoxClassExprConverter.scala b/src/main/scala/rsacomb/RDFoxClassExprConverter.scala index 7f44ab1..89a1a04 100644 --- a/src/main/scala/rsacomb/RDFoxClassExprConverter.scala +++ b/src/main/scala/rsacomb/RDFoxClassExprConverter.scala @@ -110,8 +110,8 @@ class RDFoxClassExprConverter( if (unsafe.contains(prop)) ( List( - TupleTableAtom.rdf(term, RSA.internal("PE"), c), - TupleTableAtom.rdf(c, IRI.RDF_TYPE, RSA.internal("U")) + TupleTableAtom.rdf(term, RSA.rsa("PE"), c), + TupleTableAtom.rdf(c, IRI.RDF_TYPE, RSA.rsa("U")) ), List(), c diff --git a/src/main/scala/rsacomb/RSA.scala b/src/main/scala/rsacomb/RSA.scala index 10a9d47..98c7a4d 100644 --- a/src/main/scala/rsacomb/RSA.scala +++ b/src/main/scala/rsacomb/RSA.scala @@ -21,14 +21,14 @@ import scala.collection.JavaConverters._ object RSA extends RSAOntology with RSAAxiom { - val Prefixes = new Prefixes() + val Prefixes: Prefixes = new Prefixes() Prefixes.declarePrefix(":", "http://example.com/rsa_example.owl#") - Prefixes.declarePrefix("internal:", "http://127.0.0.1/") + Prefixes.declarePrefix("rsa:", "http://127.0.0.1/") Prefixes.declarePrefix("rdf:", "http://www.w3.org/1999/02/22-rdf-syntax-ns#") Prefixes.declarePrefix("rdfs:", "http://www.w3.org/2000/01/rdf-schema#") Prefixes.declarePrefix("owl:", "http://www.w3.org/2002/07/owl#") - val EquivTo: IRI = this.internal("EquivTo") + val EquivTo: IRI = this.rsa("EquivTo") // Counter used to implement a simple fresh variable generator private var counter = -1; @@ -44,9 +44,9 @@ object RSA extends RSAOntology with RSAAxiom { + name.toString ) - def internal(name: Any): IRI = + def rsa(name: Any): IRI = IRI.create( - Prefixes.getPrefixIRIsByPrefixName.get("internal:").getIRI + Prefixes.getPrefixIRIsByPrefixName.get("rsa:").getIRI + name.toString ) diff --git a/src/main/scala/rsacomb/RSAOntology.scala b/src/main/scala/rsacomb/RSAOntology.scala index 52e13e6..78460ff 100644 --- a/src/main/scala/rsacomb/RSAOntology.scala +++ b/src/main/scala/rsacomb/RSAOntology.scala @@ -233,7 +233,7 @@ trait RSAOntology { private def rsaGraph( data: DataStoreConnection ): Graph[Resource, UnDiEdge] = { - val query = "SELECT ?X ?Y WHERE { ?X internal:E ?Y }" + val query = "SELECT ?X ?Y WHERE { ?X rsa:E ?Y }" val cursor = data.createCursor(RSA.Prefixes, query, new HashMap[String, String]()); var mul = cursor.open() @@ -280,8 +280,8 @@ trait RSAOntology { val role = axiom.objectPropertyExpressionsInSignature(0) if (this.confl(role).contains(role)) { Set( - RSA.internal("v0_" ++ RSA.hashed(axiom)), - RSA.internal("v1_" ++ RSA.hashed(axiom)) + RSA.rsa("v0_" ++ RSA.hashed(axiom)), + RSA.rsa("v1_" ++ RSA.hashed(axiom)) ) } else { Set() @@ -308,9 +308,9 @@ trait RSAOntology { // if conflR.contains(roleS) // individual = // if (axiom.hashCode < axiom1.hashCode) { - // RSA.internal("v0_" ++ axiom1.hashCode.toString()) + // RSA.rsa("v0_" ++ axiom1.hashCode.toString()) // } else { - // RSA.internal("v1_" ++ axiom1.hashCode.toString()) + // RSA.rsa("v1_" ++ axiom1.hashCode.toString()) // } // } yield individual // } @@ -347,11 +347,11 @@ trait RSAOntology { tripleDSC = RSA.hashed(classD, roleS, classC) individual = if (tripleARB > tripleDSC) { - RSA.internal("v1_" ++ tripleDSC) + RSA.rsa("v1_" ++ tripleDSC) } else { // Note that this is also the case for // `tripleARB == tripleDSC` - RSA.internal("v0_" ++ tripleDSC) + RSA.rsa("v0_" ++ tripleDSC) } } yield individual } @@ -366,7 +366,7 @@ trait RSAOntology { val named: List[Rule] = individuals.map(a => Rule.create( - TupleTableAtom.rdf(a, IRI.RDF_TYPE, RSA.internal("NAMED")) + TupleTableAtom.rdf(a, IRI.RDF_TYPE, RSA.rsa("NAMED")) ) ) @@ -539,7 +539,7 @@ trait RSAOntology { private def rules1(axiom: OWLSubClassOfAxiom): List[Rule] = { val unfold = ontology.unfold(axiom).toList // Fresh Variables - val v0 = RSA.internal("v0_" ++ RSA.hashed(axiom)) + val v0 = RSA.rsa("v0_" ++ RSA.hashed(axiom)) val varX = Variable.create("X") // Predicates val atomA: TupleTableAtom = { @@ -549,8 +549,8 @@ trait RSAOntology { def in(t: Term): TupleTableAtom = { TupleTableAtom.rdf( t, - RSA.internal("IN"), - RSA.internal(unfold.hashCode.toString) + RSA.rsa("IN"), + RSA.rsa(unfold.hashCode.toString) ) } def notIn(t: Term): Negation = Negation.create(in(t)) @@ -590,9 +590,9 @@ trait RSAOntology { .getProperty if (ontology.confl(roleR) contains roleR) { // Fresh Variables - val v0 = RSA.internal("v0_" ++ RSA.hashed(axiom)) - val v1 = RSA.internal("v1_" ++ RSA.hashed(axiom)) - val v2 = RSA.internal("v2_" ++ RSA.hashed(axiom)) + val v0 = RSA.rsa("v0_" ++ RSA.hashed(axiom)) + val v1 = RSA.rsa("v1_" ++ RSA.hashed(axiom)) + val v2 = RSA.rsa("v2_" ++ RSA.hashed(axiom)) // Predicates def atomA(t: Term): TupleTableAtom = { val cls = axiom.getSubClass.asInstanceOf[OWLClass].getIRI @@ -630,7 +630,7 @@ trait RSAOntology { .asInstanceOf[OWLObjectSomeValuesFrom] .getProperty // Fresh Variables - val v1 = RSA.internal("v1_" ++ RSA.hashed(axiom)) + val v1 = RSA.rsa("v1_" ++ RSA.hashed(axiom)) // Predicates def atomA(t: Term): TupleTableAtom = { val cls = axiom.getSubClass.asInstanceOf[OWLClass].getIRI diff --git a/src/test/scala/rsacomb/OWLAxiomSpec.scala b/src/test/scala/rsacomb/OWLAxiomSpec.scala index 75803d8..056f428 100644 --- a/src/test/scala/rsacomb/OWLAxiomSpec.scala +++ b/src/test/scala/rsacomb/OWLAxiomSpec.scala @@ -53,8 +53,8 @@ object OWLAxiomSpec { val term_x = Variable.create("x") val term_y = Variable.create("y") val term_z = Variable.create("z") - val term_c1 = RSA.internal("c_1") - val term_c2 = RSA.internal("c_2") + val term_c1 = RSA.rsa("c_1") + val term_c2 = RSA.rsa("c_2") val term_alice = RDFIRI.create("univ:alice") // RDFox Predicates @@ -223,7 +223,7 @@ class OWLAxiomSpec extends AnyFlatSpec with Matchers with LoneElement { // it should "contain a conjuction of atoms (hasSupervisor[?x,?c],Professor[?c]) in the head of the rule" in { // val skolem = SkolemStrategy.Constant(axiom_OWLSubClassOf2.toString) // val result = convertAxiom(axiom_OWLSubClassOf2, term_x, skolem) - // val term_c = RSA.internal(skolem.const.getIRI) + // val term_c = RSA.rsa(skolem.const.getIRI) // val head = List( // TupleTableAtom.rdf(term_x, iri_hasSupervisor, term_c), // TupleTableAtom.rdf(term_c, RDFIRI.RDF_TYPE, iri_Professor) diff --git a/src/test/scala/rsacomb/OWLClassSpec.scala b/src/test/scala/rsacomb/OWLClassSpec.scala index a8ac14e..505c4aa 100644 --- a/src/test/scala/rsacomb/OWLClassSpec.scala +++ b/src/test/scala/rsacomb/OWLClassSpec.scala @@ -49,9 +49,9 @@ object OWLClassSpec { // RDFox Terms val term_x = Variable.create("x") val term_y = Variable.create("y") - val term_c1 = Literal.create("internal:c_1", Datatype.IRI_REFERENCE) - val term_c2 = Literal.create("internal:c_2", Datatype.IRI_REFERENCE) - val term_alice = Literal.create("univ:alice", Datatype.IRI_REFERENCE) + val term_c1 = RSA.rsa("c_1") + val term_c2 = RSA.rsa("c_2") + val term_alice = RDFIRI.create("univ:alice") // RDFox Predicates val pred_sameAs = TupleTableName.create("owl:sameAs") -- cgit v1.2.3