Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Impl index based filtering for Raphtory APIs alongside Search APIs #1899

Draft
wants to merge 124 commits into
base: master
Choose a base branch
from

Conversation

shivamka1
Copy link
Collaborator

@shivamka1 shivamka1 commented Dec 12, 2024

TODOs:

  • Support windowed graph for index based filtering/ Write tests
  • Support subgraph for index based filtering/ Write tests
  • Impl latest_time semantics for search apis
  • Property index addresses the default cprop use case i.e., ignore cprop matched results if tprop has a non-matched value
  • Property index/Composite filters needs to support Prop/Cprop/Tprop specific filtering
  • Support secondary indexes
  • Fix search APIs for python
  • Fix search APIs for graphql
  • Fix limit/offset issue in index filtering for composite filters/ Write tests
  • Replace existing filters/filtering Raphtory APIs with composite filters and APIs/ Write tests
  • Replace filtering in Raphtory APIs with index based filtering/ Write tests
  • Create a data seed for auto-generated data
  • Add filter support for edge src and dst filters
  • Add filter builder apis
    TemporalProperty("p2").any().eq(2).   = PropertyFilter::eq(PropertyRef::TemporalProperty(Name, TemporalEnum::Any), value)
    TemporalProperty("p2").latest().eq(2) = PropertyFilter::eq(PropertyRef::TemporalProperty(Name, TemporalEnum::Latest), value)
    ConstantProperty("p2").eq(2)          = PropertyFilter::eq(PropertyRef::ConstantProperty(Name), value)
    Property("p2").eq(2).                 = PropertyFilter::eq(PropertyRef::Property(Name), value)
    
    CompositeNodeFilter::And(vec![Property("p2").eq(), Property("p2").eq()])
    
    Property("p1").eq().and(
         Property("p2").eq().or(Property("p2").eq())
    ).and(Property("p4").eq())
    
    CompositeNodeFilter::And(vec![
        Property("p2").eq(), 
        CompositeNodeFilter::Or(vec![Property("p2").eq(), Property("p3").eq()]),
        Property("p4").eq(), 
    ])

# Conflicts:
#	pometry-storage-private
#	raphtory-graphql/src/model/graph/graph.rs
#	raphtory/src/core/utils/errors.rs
#	raphtory/src/db/graph/views/node_type_filtered_subgraph.rs
#	raphtory/src/db/graph/views/window_graph.rs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants