summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/SemanticMediaWiki/includes/queryprinters/RdfResultPrinter.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/SemanticMediaWiki/includes/queryprinters/RdfResultPrinter.php')
-rw-r--r--www/wiki/extensions/SemanticMediaWiki/includes/queryprinters/RdfResultPrinter.php141
1 files changed, 141 insertions, 0 deletions
diff --git a/www/wiki/extensions/SemanticMediaWiki/includes/queryprinters/RdfResultPrinter.php b/www/wiki/extensions/SemanticMediaWiki/includes/queryprinters/RdfResultPrinter.php
new file mode 100644
index 00000000..24006dbe
--- /dev/null
+++ b/www/wiki/extensions/SemanticMediaWiki/includes/queryprinters/RdfResultPrinter.php
@@ -0,0 +1,141 @@
+<?php
+
+namespace SMW;
+
+use SMW\Query\PrintRequest;
+use SMWExporter;
+use SMWQueryResult;
+use SMWRDFXMLSerializer;
+use SMWTurtleSerializer;
+
+/**
+ * Printer class for generating RDF output
+ *
+ * @license GNU GPL v2+
+ * @since 1.6
+ *
+ * @author Markus Krötzsch
+ */
+class RdfResultPrinter extends FileExportPrinter {
+
+ /**
+ * The syntax to be used for export. May be 'rdfxml' or 'turtle'.
+ */
+ protected $syntax;
+
+ /**
+ * @see SMWResultPrinter::handleParameters
+ *
+ * @since 1.7
+ *
+ * @param array $params
+ * @param $outputmode
+ */
+ protected function handleParameters( array $params, $outputmode ) {
+ parent::handleParameters( $params, $outputmode );
+ $this->syntax = $params['syntax'];
+ }
+
+ /**
+ * @see SMWIExportPrinter::getMimeType
+ *
+ * @since 1.8
+ *
+ * @param SMWQueryResult $queryResult
+ *
+ * @return string
+ */
+ public function getMimeType( SMWQueryResult $queryResult ) {
+ return $this->syntax == 'turtle' ? 'application/x-turtle' : 'application/xml';
+ }
+
+ /**
+ * @see SMWIExportPrinter::getFileName
+ *
+ * @since 1.8
+ *
+ * @param SMWQueryResult $queryResult
+ *
+ * @return string|boolean
+ */
+ public function getFileName( SMWQueryResult $queryResult ) {
+ return $this->syntax == 'turtle' ? 'result.ttl' : 'result.rdf';
+ }
+
+ public function getName() {
+ return wfMessage( 'smw_printername_rdf' )->text();
+ }
+
+ protected function getResultText( SMWQueryResult $res, $outputMode ) {
+ if ( $outputMode == SMW_OUTPUT_FILE ) { // make RDF file
+ $serializer = $this->syntax == 'turtle' ? new SMWTurtleSerializer() : new SMWRDFXMLSerializer();
+ $serializer->startSerialization();
+ $serializer->serializeExpData( SMWExporter::getInstance()->getOntologyExpData( '' ) );
+
+ while ( $row = $res->getNext() ) {
+ $subjectDi = reset( $row )->getResultSubject();
+ $data = SMWExporter::getInstance()->makeExportDataForSubject( $subjectDi );
+
+ foreach ( $row as $resultarray ) {
+ $printreq = $resultarray->getPrintRequest();
+ $property = null;
+
+ switch ( $printreq->getMode() ) {
+ case PrintRequest::PRINT_PROP:
+ $property = $printreq->getData()->getDataItem();
+ break;
+ case PrintRequest::PRINT_CATS:
+ $property = new DIProperty( '_TYPE' );
+ break;
+ case PrintRequest::PRINT_CCAT:
+ // not serialised right now
+ break;
+ case PrintRequest::PRINT_THIS:
+ // ignored here (object is always included in export)
+ break;
+ }
+
+ if ( !is_null( $property ) ) {
+ SMWExporter::getInstance()->addPropertyValues( $property, $resultarray->getContent(), $data, $subjectDi );
+ }
+ }
+ $serializer->serializeExpData( $data );
+ }
+
+ $serializer->finishSerialization();
+
+ return $serializer->flushContent();
+ } else { // just make link to feed
+ $this->isHTML = ( $outputMode == SMW_OUTPUT_HTML ); // yes, our code can be viewed as HTML if requested, no more parsing needed
+
+ return $this->getLink( $res, $outputMode )->getText( $outputMode, $this->mLinker );
+ }
+ }
+
+ /**
+ * @see SMWResultPrinter::getParamDefinitions
+ *
+ * @since 1.8
+ *
+ * @param ParamDefinition[] $definitions
+ *
+ * @return array
+ */
+ public function getParamDefinitions( array $definitions ) {
+ $definitions = parent::getParamDefinitions( $definitions );
+
+ $definitions['limit']->setDefault( 100 );
+
+ $definitions['searchlabel']->setDefault( wfMessage( 'smw_rdf_link' )->inContentLanguage()->text() );
+
+ $definitions[] = [
+ 'name' => 'syntax',
+ 'message' => 'smw-paramdesc-rdfsyntax',
+ 'values' => [ 'rdfxml', 'turtle' ],
+ 'default' => 'rdfxml',
+ ];
+
+ return $definitions;
+ }
+
+}