const PropertyHolder::PropertyList PropertyHolder::PropertiesMatching(const IRI& iri, bool lookupParents) const
{
    PropertyList output;
    BuildPropertyList(output, iri);

    if (lookupParents)
    {
        auto parent = _parent.lock();
        if ( parent )
        {
            //parent->BuildPropertyList(output, iri);

            PropertyHolder::PropertyList pList = parent->PropertiesMatching(iri, lookupParents);
            output.insert(output.end(), pList.begin(), pList.end());
        }
    }

    return output;
}