summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/SemanticMediaWiki/docs/technical/code-snippets/semanticdata.access.md
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/SemanticMediaWiki/docs/technical/code-snippets/semanticdata.access.md')
-rw-r--r--www/wiki/extensions/SemanticMediaWiki/docs/technical/code-snippets/semanticdata.access.md71
1 files changed, 71 insertions, 0 deletions
diff --git a/www/wiki/extensions/SemanticMediaWiki/docs/technical/code-snippets/semanticdata.access.md b/www/wiki/extensions/SemanticMediaWiki/docs/technical/code-snippets/semanticdata.access.md
new file mode 100644
index 00000000..adb14ed6
--- /dev/null
+++ b/www/wiki/extensions/SemanticMediaWiki/docs/technical/code-snippets/semanticdata.access.md
@@ -0,0 +1,71 @@
+## Add semantic data to in-memory (#1202)
+
+To avoid having competing data being stored at a different point in time
+during a request aimed for the same subject, property value assignments are collected
+and stored in-memory before the finale `Store::updateData` process will
+be invoked once.
+
+
+```php
+// Create in-memory ParserOutput transfer object
+$parserData = ApplicationFactory::getInstance()->newParserData(
+ $parser->getTitle(),
+ $parser->getOutput()
+);
+
+$subject = $parserData->getSubject();
+$property = new DIProperty( 'SomeProperty' );
+
+// Add individual instances of a value for a known property
+foreach ( $values as $value ) {
+ $dataValue = DataValueFactory::getInstance()->newDataValueByProperty(
+ $property,
+ trim( $value ), // Text value
+ false,
+ $subject
+ );
+
+ $parserData->addDataValue( $dataValue );
+}
+
+// Add individual instances of a value for a property only known by
+// its textual representation
+foreach ( $values as $value ) {
+ $dataValue = DataValueFactory::getInstance()->newDataValueByText(
+ $property,
+ trim( $value ), // Text value
+ false,
+ $subject
+ );
+
+ // Adds the object to the SemanticData container you could also use
+ // $parserData->getSemanticData()->addPropertyObjectValue( ...)
+ $parserData->addDataValue( $dataValue );
+}
+
+// Ensures that objects are pushed to the ParserOutput
+$parserData->pushSemanticDataToParserOutput();
+```
+
+## Access semantic data currently stored in-memory
+
+```php
+// Create in-memory ParserOutput transfer object
+$parserData = ApplicationFactory::getInstance()->newParserData(
+ $parser->getTitle(),
+ $parser->getOutput()
+);
+
+// Access to the data store in-memory
+$semanticData = $parserData->getSemanticData();
+```
+
+## Read semantic data from DB
+
+```php
+$subject = new DIWikiPage( 'Foo', NS_MAIN );
+
+$semanticData = ApplicationFactory::getInstance()->getStore->getSemanticData(
+ $subject
+);
+``` \ No newline at end of file