I suspect the problem here is that CONCAT accepts string literals as arguments whereas in your case ?relatedIRI is bound to IRIs. You may add str(...) around it to fix it.
However, if this is the problem, Stardog should return lots of empty bindings for ?o instead of the empty set.
By the way, looking at the plan I’m thinking the following variation of the query could be generally more efficient (we’ll look into improving the optimizer in this regard):
PREFIX event: <http://example.com/ontology/odps/Event#>
PREFIX general: <http://example.com/ontology/odps/GeneralConcepts#>
SELECT ?o
FROM <http://graph.example.com>
FROM <http://ontology.example.com>
where {
{ #pragma group.join
?s a ?type . ?type rdfs:subClassOf* event:Event }
?s event:has_active_actor ?relatedIRI .
{ ?relatedIRI rdfs:label ?relatedText } UNION { ?relatedIRI general:canonical_label ?relatedText }
BIND ( CONCAT(STR(?relatedIRI), CONCAT("$$", STR(?relatedText))) as ?o )
}