jenkins-bot has submitted this change and it was merged.
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(-)
Approvals:
Manybubbles: Looks good to me, approved
jenkins-bot: Verified
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: merged
Gerrit-Change-Id: I013f156b61e72e429c39a79379e7472e7b7664bc
Gerrit-PatchSet: 1
Gerrit-Project: wikidata/query/rdf
Gerrit-Branch: master
Gerrit-Owner: Manybubbles <[email protected]>
Gerrit-Reviewer: Jdouglas <[email protected]>
Gerrit-Reviewer: Manybubbles <[email protected]>
Gerrit-Reviewer: Smalyshev <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits