Now sheXer can extract constraints with inverse_paths too. Example:
:Person
{
rdf:type [foaf:Person] ;
:likes IRI ? ;
}
:PopularPerson
{
rdf:type [foaf:Person] ;
^ :likes IRI ? ;
}
This means that a node conforming with the shape :PopularPerson must be foaf:Person type and also must be liked by at least someone. This is, for a node :p, there should be at least a triple such as (IRI, :like, :p) and another one such as (:p, a, foaf:Person) so :p conforms with :PopularPerson.
sheXer must be configured to extract inverse_paths when building the object Shaper. It's default behaviour is still extracting just direct constraints.