What Dmai says is that you should do like this:
name: string @index(term,trigram) .
hasCity: uid @reverse .
<_:uid1> <name> "India"^^<xs:string> .
<_:uid2> <name> "Pune"^^<xs:string> .
<_:uid1> <hasCity> <_:uid2>.
You can never mix _:Blank_nodes with predicates.
Note: If your predicate is a URI or has special characters, then you should wrap it with angular brackets while doing the schema mutation. E.g.
<first:name>
Despite the wrong use, in theory you should do so:
<_:uid1> <<_:uid3>> <_:uid2> .
But I’m not sure it will work. But notice, this use does not make much sense and does not seem practical to me. I suggest you follow what is recommended in the documentation.
Cheers.