@@ -170,25 +170,36 @@ export const filterData = (
170
170
allNodes : ExtendedNode [ ] ,
171
171
allRelationships : Relationship [ ] ,
172
172
scheme : Scheme
173
- ) => {
173
+ ) => {
174
174
let filteredNodes : ExtendedNode [ ] = [ ] ;
175
175
let filteredRelations : Relationship [ ] = [ ] ;
176
176
let filteredScheme : Scheme = { } ;
177
177
const entityTypes = Object . keys ( scheme ) . filter ( ( type ) => type !== 'Document' && type !== 'Chunk' ) ;
178
-
179
178
if ( graphType . includes ( 'DocumentChunk' ) && ! graphType . includes ( 'Entities' ) ) {
180
179
// Document + Chunk
181
- filteredNodes = allNodes . filter ( ( node ) => node . labels . includes ( 'Document' ) || node . labels . includes ( 'Chunk' ) ) ;
182
- filteredRelations = allRelationships . filter ( ( rel ) =>
183
- [ 'PART_OF' , 'FIRST_CHUNK' , 'SIMILAR' , 'NEXT_CHUNK' ] . includes ( rel . caption ?? '' )
180
+ filteredNodes = allNodes . filter (
181
+ ( node ) => node . labels . includes ( 'Document' ) || node . labels . includes ( 'Chunk' )
182
+ ) ;
183
+ const nodeIds = new Set ( filteredNodes . map ( ( node ) => node . id ) ) ;
184
+ filteredRelations = allRelationships . filter (
185
+ ( rel ) =>
186
+ [ 'PART_OF' , 'FIRST_CHUNK' , 'SIMILAR' , 'NEXT_CHUNK' ] . includes ( rel . caption ?? '' ) &&
187
+ nodeIds . has ( rel . from ) &&
188
+ nodeIds . has ( rel . to )
184
189
) ;
185
190
filteredScheme = { Document : scheme . Document , Chunk : scheme . Chunk } ;
186
191
} else if ( graphType . includes ( 'Entities' ) && ! graphType . includes ( 'DocumentChunk' ) ) {
187
192
// Only Entity
188
- const entityNode = allNodes . filter ( ( node ) => ! node . labels . includes ( 'Document' ) && ! node . labels . includes ( 'Chunk' ) ) ;
189
- filteredNodes = entityNode ? entityNode : [ ] ;
193
+ const entityNodes = allNodes . filter (
194
+ ( node ) => ! node . labels . includes ( 'Document' ) && ! node . labels . includes ( 'Chunk' )
195
+ ) ;
196
+ filteredNodes = entityNodes ? entityNodes : [ ] ;
197
+ const nodeIds = new Set ( filteredNodes . map ( ( node ) => node . id ) ) ;
190
198
filteredRelations = allRelationships . filter (
191
- ( rel ) => ! [ 'PART_OF' , 'FIRST_CHUNK' , 'HAS_ENTITY' , 'SIMILAR' , 'NEXT_CHUNK' ] . includes ( rel ?. caption ?? '' )
199
+ ( rel ) =>
200
+ ! [ 'PART_OF' , 'FIRST_CHUNK' , 'HAS_ENTITY' , 'SIMILAR' , 'NEXT_CHUNK' ] . includes ( rel . caption ?? '' ) &&
201
+ nodeIds . has ( rel . from ) &&
202
+ nodeIds . has ( rel . to )
192
203
) ;
193
204
filteredScheme = Object . fromEntries ( entityTypes . map ( ( key ) => [ key , scheme [ key ] ] ) ) as Scheme ;
194
205
} else if ( graphType . includes ( 'DocumentChunk' ) && graphType . includes ( 'Entities' ) ) {
@@ -198,7 +209,7 @@ export const filterData = (
198
209
filteredScheme = scheme ;
199
210
}
200
211
return { filteredNodes, filteredRelations, filteredScheme } ;
201
- } ;
212
+ } ;
202
213
203
214
export const getDateTime = ( ) => {
204
215
const date = new Date ( ) ;
0 commit comments