Page MenuHomePhabricator

inverse property no longer working in #concept in v1.6.1
Closed, ResolvedPublic

Description

Author: mtyeh411

Description:
I have created a concept using the #concept parser function in a page in the Concept namespace. It was created with a query string that uses the inverse property label (ie, with a '-' before the property) and subqueries. However, the resulting query that was saved in the concept does not preserve the inverse property labell thereby, using a totally different query.

So, the concept was created with {{#concept:[[-Foo.bar::baz]]}} and results in a concept with [[Foo.bar::baz]] as its query.

This feature was properly functioning in previous versions of SMW (tested with v1.5.4), but is no longer working in v1.6.1. For this reason, I am elevating the severity to a major loss in functionality.


Version: unspecified
Severity: major
OS: Linux

Details

Reference
bz31118

Event Timeline

bzimport raised the priority of this task from to High.Nov 21 2014, 11:49 PM
bzimport set Reference to bz31118.
bzimport added a subscriber: Unknown Object (MLST).

I'm guessing this has something to do with the data item changes. Markus, any ideas?

mtyeh411 wrote:

I'm still noticing this as of SMW 1.8 alpha.

Please check [http://scratchpad.referata.com/wiki/Concept:Test] for example.

The concept does not contain the expected pages.

Based on the debug printout of query containing inverse property, the generated wiki query seems off, even though the results return as expected.

Change https://gerrit.wikimedia.org/r/#/c/31279/ fixes two problems with inverse properties:

(1) The "-" would not be shown in query strings that are generated from parsed queries.
(2) Queries would fail if the property after the - would be written in lower case.

I think that the first should have caused this bug, so it is probably fixed as soon as the above change is merged.

Change was merged now; problem should be fixed in master. It is probably necessary to refresh all affected Concept: pages because the error will have been stored in the database.