newMwHooksHandler()->invokeHooksFromRegistry(); $this->semanticDataFactory = $utilityFactory->newSemanticDataFactory(); $this->queryResultValidator = $utilityFactory->newValidatorFactory()->newQueryResultValidator(); $this->fixturesProvider = $utilityFactory->newFixturesFactory()->newFixturesProvider(); $this->fixturesProvider->setupDependencies( $this->getStore() ); } protected function tearDown(): void { $fixturesCleaner = UtilityFactory::getInstance()->newFixturesFactory()->newFixturesCleaner(); $fixturesCleaner ->purgeSubjects( $this->subjects ) ->purgeAllKnownFacts(); parent::tearDown(); } public function testConjunctiveNamespaceQueryThatIncludesSubobject() { $semanticData = $this->semanticDataFactory->newEmptySemanticData( __METHOD__ ); $this->subjects[] = $semanticData->getSubject(); $factsheet = $this->fixturesProvider->getFactsheet( 'Berlin' ); $factsheet->setTargetSubject( $semanticData->getSubject() ); $demographicsSubobject = $factsheet->getDemographics(); $this->subjects[] = $demographicsSubobject->getSemanticData()->getSubject(); $semanticData->addPropertyObjectValue( $demographicsSubobject->getProperty(), $demographicsSubobject->getContainer() ); $populationValue = $factsheet->getPopulationValue(); $semanticData->addDataValue( $populationValue ); $this->getStore()->updateData( $semanticData ); $someProperty = new SomeProperty( $populationValue->getProperty(), new ValueDescription( $populationValue->getDataItem(), null, SMW_CMP_EQ ) ); /** * @query [[Population::SomeDistinctPopulationValue]][[:+]] */ $description = new Conjunction(); $description->addDescription( $someProperty ); $description->addDescription( new NamespaceDescription( NS_MAIN ) ); $query = new Query( $description, false, false ); $query->querymode = Query::MODE_INSTANCES; $queryResult = $this->getStore()->getQueryResult( $query ); $this->assertEquals( 2, $queryResult->getCount() ); $this->queryResultValidator->assertThatQueryResultHasSubjects( $this->subjects, $queryResult ); } }