public function testVisibility() { $title = Title::newFromText(__METHOD__); $instance = new SemanticData(DIWikiPage::newFromTitle($title)); $instance->addDataValue(DataValueFactory::getInstance()->newPropertyValue('Has fooQuex', 'Bar')); $this->assertTrue($instance->hasVisibleProperties()); $instance->addSubobject($this->newSubobject($title)); $this->assertTrue($instance->hasVisibleSpecialProperties()); }
/** * Add all data from the given SMWSemanticData. * Only works if the imported SMWSemanticData has the same subject as * this SMWSemanticData; an exception is thrown otherwise. * * @since 1.7 * * @param SemanticData $semanticData object to copy from * * @throws MWException if subjects do not match */ public function importDataFrom(SemanticData $semanticData) { if (!$this->mSubject->equals($semanticData->getSubject())) { throw new MWException("SMWSemanticData can only represent data about one subject. Importing data for another subject is not possible."); } // Shortcut when copying into empty objects that don't ask for // more duplicate elimination: if (count($this->mProperties) == 0 && $semanticData->mNoDuplicates >= $this->mNoDuplicates) { $this->mProperties = $semanticData->getProperties(); $this->mPropVals = array(); foreach ($this->mProperties as $property) { $this->mPropVals[$property->getKey()] = $semanticData->getPropertyValues($property); } $this->mHasVisibleProps = $semanticData->hasVisibleProperties(); $this->mHasVisibleSpecs = $semanticData->hasVisibleSpecialProperties(); } else { foreach ($semanticData->getProperties() as $property) { $values = $semanticData->getPropertyValues($property); foreach ($values as $dataItem) { $this->addPropertyObjectValue($property, $dataItem); } } } foreach ($semanticData->getSubSemanticData() as $semData) { $this->addSubSemanticData($semData); } }