You maybe want to take a look at UIMA Ruta for a rule-based approach.
There are various ways to solve this in UIMA Ruta dependent on the preconditions and requirements.
Here's a simple example that processes a document like "john buys a car. Smith is home."
DECLARE Name, Asset, Sentence;
DECLARE Annotation Person (Name name, Asset asset);
// just to get some annotations
"john" -> Name;
"Smith" -> Name;
"car" -> Asset;
"home" -> Asset;
// span of relation
(# PERIOD){-> Sentence};
PERIOD (# PERIOD){-> Sentence};
// create relation
Sentence{-> CREATE(Person, "name" = Name, "asset" = Asset)};
(I am a developer of UIMA Ruta)