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 +++++------ 5 files changed, 68 insertions(+), 57 deletions(-) (limited to 'src/main') 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 -- cgit v1.2.3