Manybubbles has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/203956

Change subject: Don't try to modify entities when they are values
......................................................................

Don't try to modify entities when they are values

This was causing things to be super slow and its super wrong!

Closes T95935

Change-Id: I013f156b61e72e429c39a79379e7472e7b7664bc
---
M tools/src/main/java/org/wikidata/query/rdf/tool/rdf/RdfRepository.java
M 
tools/src/test/java/org/wikidata/query/rdf/tool/rdf/RdfRepositoryIntegrationTest.java
2 files changed, 29 insertions(+), 16 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/wikidata/query/rdf 
refs/changes/56/203956/1

diff --git 
a/tools/src/main/java/org/wikidata/query/rdf/tool/rdf/RdfRepository.java 
b/tools/src/main/java/org/wikidata/query/rdf/tool/rdf/RdfRepository.java
index cf47fab..2c6f75b 100644
--- a/tools/src/main/java/org/wikidata/query/rdf/tool/rdf/RdfRepository.java
+++ b/tools/src/main/java/org/wikidata/query/rdf/tool/rdf/RdfRepository.java
@@ -93,7 +93,7 @@
         valuesOnReferencesBuilder.where().add(startsWith("?statement", 
uris.statement()));
         valuesOnReferencesBuilder.where("?statement", "prov:wasDerivedFrom", 
"?ref");
         valuesOnReferencesBuilder.where("?ref", "?expandedValuePred", "?s");
-        valuesOnReferencesBuilder.where().add(startsWith("?expandedValuePred", 
uris.value()));
+        valuesOnReferencesBuilder.where().add(startsWith("?s", uris.value()));
         valuesOnReferencesBuilder.where("?s", "?p", "?o");
         // We can't clear references that are still used elsewhere
         valuesOnReferencesBuilder.where().notExists()//
@@ -125,7 +125,7 @@
         valuesOnExpandedStatementsBuilder.where(entity, "?statementPred", 
"?statement");
         valuesOnExpandedStatementsBuilder.where().add(startsWith("?statement", 
uris.statement()));
         valuesOnExpandedStatementsBuilder.where("?statement", 
"?expandedValuePred", "?s");
-        
valuesOnExpandedStatementsBuilder.where().add(startsWith("?expandedValuePred", 
uris.value()));
+        valuesOnExpandedStatementsBuilder.where().add(startsWith("?s", 
uris.value()));
         valuesOnExpandedStatementsBuilder.where("?s", "?p", "?o");
         if (!statements.isEmpty()) {
             
valuesOnExpandedStatementsBuilder.where().notExists().values(statements, "?s", 
"?p", "?o");
diff --git 
a/tools/src/test/java/org/wikidata/query/rdf/tool/rdf/RdfRepositoryIntegrationTest.java
 
b/tools/src/test/java/org/wikidata/query/rdf/tool/rdf/RdfRepositoryIntegrationTest.java
index 9a2c48f..d036f63 100644
--- 
a/tools/src/test/java/org/wikidata/query/rdf/tool/rdf/RdfRepositoryIntegrationTest.java
+++ 
b/tools/src/test/java/org/wikidata/query/rdf/tool/rdf/RdfRepositoryIntegrationTest.java
@@ -201,10 +201,8 @@
         statement(george, valueUri, Ontology.Time.VALUE, new 
LiteralImpl("cat"));
         statement(george, valueUri, Ontology.Time.CALENDAR_MODEL, new 
LiteralImpl("animals"));
         rdfRepository.sync("Q23", george);
-        assertTrue(rdfRepository
-.ask(Ontology.prefix(uris.prefixes(new StringBuilder()))
-                .append("ASK { entity:Q23 entity:P509 [ v:P509-value [ 
ontology:timeTime \"cat\" ] ] }")
-                        .toString()));
+        assertTrue(rdfRepository.ask(Ontology.prefix(uris.prefixes(new 
StringBuilder()))
+                .append("ASK { entity:Q23 entity:P509 [ v:P509-value [ 
ontology:timeTime \"cat\" ] ] }").toString()));
         assertTrue(rdfRepository.ask(Ontology.prefix(uris.prefixes(new 
StringBuilder()))
                 .append("ASK { entity:Q23 entity:P509 [ v:P509-value [ 
ontology:timeCalendarModel \"animals\" ] ] }")
                 .toString()));
@@ -239,9 +237,13 @@
         statement(george, "Q23", "P509", statementUri);
         statement(george, statementUri, Provenance.WAS_DERIVED_FROM, 
referenceUri);
         statement(george, referenceUri, uris.value() + "P509-value", valueUri);
+        statement(george, referenceUri, uris.value() + "P143", "Q328");
         statement(george, valueUri, Ontology.Time.VALUE, new 
LiteralImpl("cat"));
         statement(george, valueUri, Ontology.Time.CALENDAR_MODEL, new 
LiteralImpl("animals"));
         rdfRepository.sync("Q23", george);
+        List<Statement> enwiki = new ArrayList<>();
+        statement(enwiki, "Q328", "P509", "Q328");
+        rdfRepository.sync("Q328", enwiki);
         assertTrue(rdfRepository
                 .ask(Provenance
                         .prefix(Ontology.prefix(uris.prefixes(new 
StringBuilder())))
@@ -251,7 +253,14 @@
                 .ask(Provenance
                         .prefix(Ontology.prefix(uris.prefixes(new 
StringBuilder())))
                         .append("ASK { entity:Q23 entity:P509 [ 
prov:wasDerivedFrom [ v:P509-value [ ontology:timeCalendarModel \"animals\" ] ] 
] }")
-                .toString()));
+                        .toString()));
+        assertTrue(rdfRepository
+                .ask(Provenance
+                        .prefix(Ontology.prefix(uris.prefixes(new 
StringBuilder())))
+                        .append("ASK { entity:Q23 entity:P509 [ 
prov:wasDerivedFrom [ v:P143 [ entity:P509 entity:Q328 ] ] ] }")
+                        .toString()));
+        assertTrue(rdfRepository.ask(Provenance.prefix(uris.prefixes(new 
StringBuilder()))
+                .append("ASK { entity:Q328 entity:P509 entity:Q328 
}").toString()));
     }
 
     @Test
@@ -281,7 +290,15 @@
                 .ask(Provenance
                         .prefix(Ontology.prefix(uris.prefixes(new 
StringBuilder())))
                         .append("ASK { entity:Q23 entity:P509 [ 
prov:wasDerivedFrom [ v:P509-value [ ontology:timeTime \"cat\" ] ] ] }")
-                .toString()));
+                        .toString()));
+        // We've unlinked enwiki
+        assertFalse(rdfRepository
+                .ask(Provenance
+                        .prefix(Ontology.prefix(uris.prefixes(new 
StringBuilder())))
+                        .append("ASK { entity:Q23 entity:P509 [ 
prov:wasDerivedFrom [ v:P143 [ entity:P509 entity:Q328 ] ] ] }")
+                        .toString()));
+        assertTrue(rdfRepository.ask(Provenance.prefix(uris.prefixes(new 
StringBuilder()))
+                .append("ASK { entity:Q328 entity:P509 entity:Q328 
}").toString()));
     }
 
     @Test
@@ -289,8 +306,7 @@
         String referenceUri = uris.reference() + 
"e36b7373814a0b74caa84a5fc2b1e3297060ab0f";
         List<Statement> george = 
expandedStatement("9D3713FF-7BCC-489F-9386-C7322C0AC284", "Q23", "P19", 
"Q494413",
                 Ontology.NORMAL_RANK, referenceUri);
-        statement(george, referenceUri, uris.value() + "P854",
-                "http://www.anb.org/articles/02/02-00332.html";);
+        statement(george, referenceUri, uris.value() + "P854", 
"http://www.anb.org/articles/02/02-00332.html";);
         rdfRepository.sync("Q23", george);
         StringBuilder query = 
Provenance.prefix(Ontology.prefix(uris.prefixes(new StringBuilder())));
         query.append("SELECT * WHERE { entity:Q23 entity:P19 [ v:P19 
?placeOfBirth; prov:wasDerivedFrom [ ?provP ?provO ] ] }");
@@ -328,8 +344,7 @@
         String referenceUri = uris.reference() + 
"e36b7373814a0b74caa84a5fc2b1e3297060ab0f";
         List<Statement> george = 
expandedStatement("9D3713FF-7BCC-489F-9386-C7322C0AC284", "Q23", "P19", 
"Q494413",
                 Ontology.NORMAL_RANK, referenceUri);
-        statement(george, referenceUri, uris.value() + "P143",
-                "http://www.anb.org/articles/02/02-00332.html";);
+        statement(george, referenceUri, uris.value() + "P143", 
"http://www.anb.org/articles/02/02-00332.html";);
         rdfRepository.sync("Q23", george);
         StringBuilder query = 
Provenance.prefix(Ontology.prefix(uris.prefixes(new StringBuilder())));
         query.append("SELECT * WHERE { entity:Q23 entity:P19 [ v:P19 
?placeOfBirth; prov:wasDerivedFrom [ ?provP ?provO ] ] }");
@@ -385,8 +400,7 @@
 
         // Query one more way just to be sure it works 10000%
         query = Ontology.prefix(uris.prefixes(new StringBuilder()));
-        query.append("SELECT * WHERE { ?s ?p ?o . FILTER( STRSTARTS(STR(?s), 
\"")
-.append(uris.reference())
+        query.append("SELECT * WHERE { ?s ?p ?o . FILTER( STRSTARTS(STR(?s), 
\"").append(uris.reference())
                 .append("\") ) . }");
         r = rdfRepository.query(query.toString());
         assertTrue(r.hasNext());
@@ -405,8 +419,7 @@
          * anywhere.
          */
         query = Ontology.prefix(uris.prefixes(new StringBuilder()));
-        query.append("SELECT * WHERE { ?s ?p ?o . FILTER( STRSTARTS(STR(?s), 
\"")
-.append(uris.reference())
+        query.append("SELECT * WHERE { ?s ?p ?o . FILTER( STRSTARTS(STR(?s), 
\"").append(uris.reference())
                 .append("\") ) . }");
         r = rdfRepository.query(query.toString());
         assertFalse(r.hasNext());

-- 
To view, visit https://gerrit.wikimedia.org/r/203956
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I013f156b61e72e429c39a79379e7472e7b7664bc
Gerrit-PatchSet: 1
Gerrit-Project: wikidata/query/rdf
Gerrit-Branch: master
Gerrit-Owner: Manybubbles <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to