package Ġcom . eg m . st elli o . search . web Ċ Ċ import Ġarrow . core . extensions . list k . align . empty Ċ import Ġcom . eg m . st elli o . search . config . Web Security Test Config Ċ import Ġcom . eg m . st elli o . search . model . Simpl ified Attribute Instance Result Ċ import Ġcom . eg m . st elli o . search . model . Temporal Entities Query Ċ import Ġcom . eg m . st elli o . search . model . Temporal Entity Attribute Ċ import Ġcom . eg m . st elli o . search . model . Temporal Query Ċ import Ġcom . eg m . st elli o . search . service . Attribute Instance Service Ċ import Ġcom . eg m . st elli o . search . service . Query Service Ċ import Ġcom . eg m . st elli o . search . service . Temporal Entity Attribute Service Ċ import Ġcom . eg m . st elli o . shared . model . BadRequest DataException Ċ import Ġcom . eg m . st elli o . shared . model . Resource NotFoundException Ċ import Ġcom . eg m . st elli o . shared . util .* Ċ import Ġcom . eg m . st elli o . shared . util . Json Utils . deserialize Object Ċ import Ġcom . nin jas quad . spring mock k . Mock k Bean Ċ import Ġio . mock k . co Every Ċ import Ġio . mock k . co Verify Ċ import Ġio . mock k . confirm Verified Ċ import Ġio . mock k . every Ċ import Ġio . mock k . verify Ċ import Ġorg . junit . jupiter . api . Assertions . assertEquals Ċ import Ġorg . junit . jupiter . api . Assertions . assertNull Ċ import Ġorg . junit . jupiter . api . Assertions . assertTrue Ċ import Ġorg . junit . jupiter . api . Before All Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . boot . test . autoconfigure . web . reactive . Web Flux Test Ċ import Ġorg . springframework . context . annotation . Import Ċ import Ġorg . springframework . http . MediaType Ċ import Ġorg . springframework . security . test . context . support . With Anonymous User Ċ import Ġorg . springframework . security . test . context . support . With Mock User Ċ import Ġorg . springframework . test . context . Active Profiles Ċ import Ġorg . springframework . test . web . reactive . server . Web Test Client Ċ import Ġorg . springframework . util . Linked Multi Value Map Ċ import Ġorg . springframework . web . reactive . function . Body Inser ters Ċ import Ġreactor . core . publisher . Flux Ċ import Ġreactor . core . publisher . Mono Ċ import Ġjava . time . Z onedDateTime Ċ import Ġjava . util . UUID Ċ Ċ @ Active Profiles (" test ") Ċ @ Web Flux Test ( Temporal Entity Handler :: class ) Ċ @ Import ( Web Security Test Config :: class ) Ċ @ With Mock User Ċ class ĠTemp oral Entity Handler Tests Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġincoming Attr Expanded Name Ġ= Ġ" https :// ontology . e global mark . com / apic # incoming " ĊĠĠĠ Ġprivate Ġval Ġoutgoing Attr Expanded Name Ġ= Ġ" https :// ontology . e global mark . com / apic # outgoing " ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġap ic Header Link : ĠString ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġweb Client : ĠWeb Test Client ĊĊĠĠĠ Ġ@ Mock k Bean ( relax ed Ġ= Ġtrue ) ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġquery Service : ĠQuery Service ĊĊĠĠĠ Ġ@ Mock k Bean ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġattribute Instance Service : ĠAttribute Instance Service ĊĊĠĠĠ Ġ@ Mock k Bean ( relax ed Ġ= Ġtrue ) ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtemporal Entity Attribute Service : ĠTemp oral Entity Attribute Service ĊĊĠĠĠ Ġprivate Ġval Ġentity Uri Ġ= Ġ" urn : ng si - ld : B ee Hive : TEST C ". to Uri () ĊĊĠĠĠ Ġ@ Before All ĊĠĠĠ Ġfun Ġconfigure Web Client Defaults () Ġ{ ĊĠĠĠĠĠĠĠ Ġap ic Header Link Ġ= Ġbuild Context Link Header ( APIC _ COMP O UND _ CONTEXT ) ĊĊĠĠĠĠĠĠĠ Ġweb Client Ġ= Ġweb Client . mutate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. default Headers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . accept Ġ= ĠlistOf ( JSON _ LD _ MEDIA _ TYPE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . contentType Ġ= ĠJSON _ LD _ MEDIA _ TYPE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġcorrectly Ġhandle Ġan Ġattribute Ġwith Ġone Ġinstance `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġentity Temporal Fragment Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Sample Data (" fragments / temporal _ entity _ fragment _ one _ attribute _ one _ instance . json ld ") ĊĠĠĠĠĠĠĠ Ġval Ġtemporal Entity Attribute Uuid Ġ= ĠUUID . randomUUID () ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtemporal Entity Attribute Service . get For Entity And Attribute ( any (), Ġany ()) Ġ} Ġanswers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMono . just ( temporal Entity Attribute Uuid ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġattribute Instance Service . addAttribute Instance ( any (), Ġany (), Ġany (), Ġany ()) Ġ} Ġanswers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMono . just ( 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġweb Client . post () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/ ng si - ld / v 1 / temporal / entities /$ entity Uri / attrs ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" Link ", Ġbuild Context Link Header ( APIC _ COMP O UND _ CONTEXT )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( Body Inser ters . from Value ( entity Temporal Fragment )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is No Content ĊĊĠĠĠĠĠĠĠ Ġverify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemporal Entity Attribute Service . get For Entity And Attribute ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeq ( entity Uri ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeq (" https :// ontology . e global mark . com / apic # incoming ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġverify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattribute Instance Service . addAttribute Instance ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeq ( temporal Entity Attribute Uuid ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeq (" incoming "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . size Ġ== Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( APIC _ COMP O UND _ CONTEXT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġconfirm Verified ( temporal Entity Attribute Service ) ĊĠĠĠĠĠĠĠ Ġconfirm Verified ( attribute Instance Service ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġcorrectly Ġhandle Ġan Ġattribute Ġwith Ġmany Ġinstances `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġentity Temporal Fragment Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Sample Data (" fragments / temporal _ entity _ fragment _ one _ attribute _ many _ instances . json ld ") ĊĠĠĠĠĠĠĠ Ġval Ġtemporal Entity Attribute Uuid Ġ= ĠUUID . randomUUID () ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtemporal Entity Attribute Service . get For Entity And Attribute ( any (), Ġany ()) Ġ} Ġanswers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMono . just ( temporal Entity Attribute Uuid ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġattribute Instance Service . addAttribute Instance ( any (), Ġany (), Ġany (), Ġany ()) Ġ} Ġanswers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMono . just ( 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġweb Client . post () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/ ng si - ld / v 1 / temporal / entities /$ entity Uri / attrs ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" Link ", Ġbuild Context Link Header ( APIC _ COMP O UND _ CONTEXT )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( Body Inser ters . from Value ( entity Temporal Fragment )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is No Content ĊĊĠĠĠĠĠĠĠ Ġverify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemporal Entity Attribute Service . get For Entity And Attribute ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeq ( entity Uri ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeq (" https :// ontology . e global mark . com / apic # incoming ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattribute Instance Service . addAttribute Instance ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeq ( temporal Entity Attribute Uuid ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeq (" incoming "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . size Ġ== Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( APIC _ COMP O UND _ CONTEXT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġconfirm Verified ( temporal Entity Attribute Service ) ĊĠĠĠĠĠĠĠ Ġconfirm Verified ( attribute Instance Service ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġcorrectly Ġhandle Ġmany Ġattributes Ġwith Ġone Ġinstance `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġentity Temporal Fragment Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Sample Data (" fragments / temporal _ entity _ fragment _ many _ attributes _ one _ instance . json ld ") ĊĠĠĠĠĠĠĠ Ġval Ġtemporal Entity Attribute Uuid Ġ= ĠUUID . randomUUID () ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtemporal Entity Attribute Service . get For Entity And Attribute ( any (), Ġany ()) Ġ} Ġanswers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMono . just ( temporal Entity Attribute Uuid ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġattribute Instance Service . addAttribute Instance ( any (), Ġany (), Ġany (), Ġany ()) Ġ} Ġanswers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMono . just ( 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġweb Client . post () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/ ng si - ld / v 1 / temporal / entities /$ entity Uri / attrs ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" Link ", Ġbuild Context Link Header ( APIC _ COMP O UND _ CONTEXT )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( Body Inser ters . from Value ( entity Temporal Fragment )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is No Content ĊĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemporal Entity Attribute Service . get For Entity And Attribute ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeq ( entity Uri ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" https :// ontology . e global mark . com / apic # incoming ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" https :// ontology . e global mark . com / apic # outgoing " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattribute Instance Service . addAttribute Instance ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeq ( temporal Entity Attribute Uuid ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor (" incoming ", Ġ" outgoing "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . size Ġ== Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( APIC _ COMP O UND _ CONTEXT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġconfirm Verified ( temporal Entity Attribute Service ) ĊĠĠĠĠĠĠĠ Ġconfirm Verified ( attribute Instance Service ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġcorrectly Ġhandle Ġmany Ġattributes Ġwith Ġmany Ġinstances `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġentity Temporal Fragment Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Sample Data (" fragments / temporal _ entity _ fragment _ many _ attributes _ many _ instances . json ld ") ĊĠĠĠĠĠĠĠ Ġval Ġtemporal Entity Attribute Uuid Ġ= ĠUUID . randomUUID () ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtemporal Entity Attribute Service . get For Entity And Attribute ( any (), Ġany ()) Ġ} Ġanswers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMono . just ( temporal Entity Attribute Uuid ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġattribute Instance Service . addAttribute Instance ( any (), Ġany (), Ġany (), Ġany ()) Ġ} Ġanswers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMono . just ( 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġweb Client . post () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/ ng si - ld / v 1 / temporal / entities /$ entity Uri / attrs ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" Link ", Ġbuild Context Link Header ( APIC _ COMP O UND _ CONTEXT )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( Body Inser ters . from Value ( entity Temporal Fragment )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is No Content ĊĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemporal Entity Attribute Service . get For Entity And Attribute ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeq ( entity Uri ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" https :// ontology . e global mark . com / apic # incoming ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" https :// ontology . e global mark . com / apic # outgoing " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattribute Instance Service . addAttribute Instance ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeq ( temporal Entity Attribute Uuid ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor (" incoming ", Ġ" outgoing "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . size Ġ== Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( APIC _ COMP O UND _ CONTEXT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġconfirm Verified ( temporal Entity Attribute Service ) ĊĠĠĠĠĠĠĠ Ġconfirm Verified ( attribute Instance Service ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġreturn Ġa Ġ 4 0 0 Ġif Ġtemporal Ġentity Ġfragment Ġis Ġbad ly Ġformed `() Ġ{ ĊĠĠĠĠĠĠĠ Ġweb Client . post () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/ ng si - ld / v 1 / temporal / entities / entityId / attrs ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" Link ", Ġbuild Context Link Header ( APIC _ COMP O UND _ CONTEXT )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( Body Inser ters . from Value ("{ Ġ\" id \": Ġ\" bad \" Ġ} ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is BadRequest ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Body (). json ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type ":" https :// uri . et si . org / ng si - ld / errors / BadRequest Data ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" title ":" The Ġrequest Ġincludes Ġinput Ġdata Ġwhich Ġdoes Ġnot Ġmeet Ġthe Ġrequirements Ġof Ġthe Ġoperation ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" detail ":" Unable Ġto Ġparse Ġinput Ġpayload " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġraise Ġa Ġ 4 0 0 Ġif Ġtimer el Ġis Ġpresent Ġwithout Ġtime Ġquery Ġparam `() Ġ{ ĊĠĠĠĠĠĠĠ Ġweb Client . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/ ng si - ld / v 1 / temporal / entities / entityId ? timer el = before ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is BadRequest ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Body (). json ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type ":" https :// uri . et si . org / ng si - ld / errors / BadRequest Data ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" title ":" The Ġrequest Ġincludes Ġinput Ġdata Ġwhich Ġdoes Ġnot Ġmeet Ġthe Ġrequirements Ġof Ġthe Ġoperation ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" detail ":" ' timer el ' Ġand Ġ' time ' Ġmust Ġbe Ġused Ġin Ġconjunction " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġraise Ġa Ġ 4 0 0 Ġif Ġtime Ġis Ġpresent Ġwithout Ġtimer el Ġquery Ġparam `() Ġ{ ĊĠĠĠĠĠĠĠ Ġweb Client . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/ ng si - ld / v 1 / temporal / entities / entityId ? time = 2 0 2 0 - 1 0 - 2 9 T 1 8 : 0 0 : 0 0 Z ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is BadRequest ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Body (). json ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type ":" https :// uri . et si . org / ng si - ld / errors / BadRequest Data ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" title ":" The Ġrequest Ġincludes Ġinput Ġdata Ġwhich Ġdoes Ġnot Ġmeet Ġthe Ġrequirements Ġof Ġthe Ġoperation ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" detail ":" ' timer el ' Ġand Ġ' time ' Ġmust Ġbe Ġused Ġin Ġconjunction " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġgive Ġa Ġ 2 0 0 Ġif Ġno Ġtimer el Ġand Ġno Ġtime Ġquery Ġparams Ġare Ġin Ġthe Ġrequest `() Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġquery Service . query Temporal Entity ( any (), Ġany (), Ġany (), Ġany ()) Ġ} Ġreturns Ġempty Map () ĊĠĠĠĠĠĠĠ Ġweb Client . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/ ng si - ld / v 1 / temporal / entities /$ entity Uri ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is Ok ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġraise Ġa Ġ 4 0 0 Ġif Ġtimer el Ġis Ġbetween Ġand Ġno ĠendTime Ġprovided `() Ġ{ ĊĠĠĠĠĠĠĠ Ġweb Client . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/ ng si - ld / v 1 / temporal / entities / entityId ? timer el = between & time = startTime ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is BadRequest ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Body (). json ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type ":" https :// uri . et si . org / ng si - ld / errors / BadRequest Data ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" title ":" The Ġrequest Ġincludes Ġinput Ġdata Ġwhich Ġdoes Ġnot Ġmeet Ġthe Ġrequirements Ġof Ġthe Ġoperation ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" detail ":" ' endTime ' Ġrequest Ġparameter Ġis Ġmandatory Ġif Ġ' timer el ' Ġis Ġ' between '" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġraise Ġa Ġ 4 0 0 Ġif Ġtime Ġis Ġnot Ġparse able `() Ġ{ ĊĠĠĠĠĠĠĠ Ġweb Client . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/ ng si - ld / v 1 / temporal / entities / entityId ? timer el = before & time = bad Time ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is BadRequest ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Body (). json ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type ":" https :// uri . et si . org / ng si - ld / errors / BadRequest Data ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" title ":" The Ġrequest Ġincludes Ġinput Ġdata Ġwhich Ġdoes Ġnot Ġmeet Ġthe Ġrequirements Ġof Ġthe Ġoperation ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" detail ":" ' time ' Ġparameter Ġis Ġnot Ġa Ġvalid Ġdate " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġraise Ġa Ġ 4 0 0 Ġif Ġtimer el Ġis Ġnot Ġa Ġvalid Ġvalue `() Ġ{ ĊĠĠĠĠĠĠĠ Ġweb Client . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/ ng si - ld / v 1 / temporal / entities / entityId ? timer el = be for & time = bad Time ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is BadRequest ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Body (). json ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type ":" https :// uri . et si . org / ng si - ld / errors / BadRequest Data ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" title ":" The Ġrequest Ġincludes Ġinput Ġdata Ġwhich Ġdoes Ġnot Ġmeet Ġthe Ġrequirements Ġof Ġthe Ġoperation ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" detail ":" ' timer el ' Ġis Ġnot Ġvalid , Ġit Ġshould Ġbe Ġone Ġof Ġ' before ', Ġ' between ', Ġor Ġ' after '" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġraise Ġa Ġ 4 0 0 Ġif Ġtimer el Ġis Ġbetween Ġand ĠendTime Ġis Ġnot Ġparse able `() Ġ{ ĊĠĠĠĠĠĠĠ Ġweb Client . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/ ng si - ld / v 1 / temporal / entities / entityId ? timer el = between & time = 2 0 1 9 - 1 0 - 1 7 T 0 7 : 3 1 : 3 9 Z & endTime = endTime ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is BadRequest ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Body (). json ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type ":" https :// uri . et si . org / ng si - ld / errors / BadRequest Data ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" title ":" The Ġrequest Ġincludes Ġinput Ġdata Ġwhich Ġdoes Ġnot Ġmeet Ġthe Ġrequirements Ġof Ġthe Ġoperation ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" detail ":" ' endTime ' Ġparameter Ġis Ġnot Ġa Ġvalid Ġdate " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġraise Ġa Ġ 4 0 0 Ġif Ġone Ġof Ġtime Ġbucket Ġor Ġaggregate Ġis Ġmissing `() Ġ{ ĊĠĠĠĠĠĠĠ Ġweb Client . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/ ng si - ld / v 1 / temporal / entities / entityId ? timer el = after & time = 2 0 2 0 - 0 1 - 3 1 T 0 7 : 3 1 : 3 9 Z & time Bucket = 1 Ġminute ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is BadRequest ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Body (). json ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type ":" https :// uri . et si . org / ng si - ld / errors / BadRequest Data ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" title ":" The Ġrequest Ġincludes Ġinput Ġdata Ġwhich Ġdoes Ġnot Ġmeet Ġthe Ġrequirements Ġof Ġthe Ġoperation ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" detail ":" ' time Bucket ' Ġand Ġ' aggregate ' Ġmust Ġbe Ġused Ġin Ġconjunction " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġraise Ġa Ġ 4 0 0 Ġif Ġaggregate Ġfunction Ġis Ġunknown `() Ġ{ ĊĠĠĠĠĠĠĠ Ġweb Client . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ ng si - ld / v 1 / temporal / entities / entityId ?" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" timer el = after & time = 2 0 2 0 - 0 1 - 3 1 T 0 7 : 3 1 : 3 9 Z & time Bucket = 1 Ġminute & aggregate = unknown " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is BadRequest ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Body (). json ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type ":" https :// uri . et si . org / ng si - ld / errors / BadRequest Data ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" title ":" The Ġrequest Ġincludes Ġinput Ġdata Ġwhich Ġdoes Ġnot Ġmeet Ġthe Ġrequirements Ġof Ġthe Ġoperation ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" detail ":" Value Ġ' unknown ' Ġis Ġnot Ġsupported Ġfor Ġ' aggregate ' Ġparameter " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġreturn Ġa Ġ 4 0 4 Ġif Ġtemporal Ġentity Ġattribute Ġdoes Ġnot Ġexist `() Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Service . query Temporal Entity ( any (), Ġany (), Ġany (), Ġany ()) ĊĠĠĠĠĠĠĠ Ġ} Ġthrows ĠResource NotFoundException (" Entity Ġurn : ng si - ld : B ee Hive : TEST C Ġwas Ġnot Ġfound ") ĊĊĠĠĠĠĠĠĠ Ġweb Client . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ ng si - ld / v 1 / temporal / entities /$ entity Uri ?" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" timer el = between & time = 2 0 1 9 - 1 0 - 1 7 T 0 7 : 3 1 : 3 9 Z & endTime = 2 0 1 9 - 1 0 - 1 8 T 0 7 : 3 1 : 3 9 Z " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is NotFound ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Body (). json ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type ":" https :// uri . et si . org / ng si - ld / errors / Resource NotFound ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" title ":" The Ġreferred Ġresource Ġhas Ġnot Ġbeen Ġfound ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" detail ":" ${ entity NotFound Message ( entity Uri . toString ()) }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġreturn Ġa Ġ 2 0 0 Ġif Ġminimal Ġrequired Ġparameters Ġare Ġvalid `() Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġquery Service . query Temporal Entity ( any (), Ġany (), Ġany (), Ġany ()) Ġ} Ġreturns Ġempty Map () ĊĊĠĠĠĠĠĠĠ Ġweb Client . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ ng si - ld / v 1 / temporal / entities /$ entity Uri ?" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" timer el = between & time = 2 0 1 9 - 1 0 - 1 7 T 0 7 : 3 1 : 3 9 Z & endTime = 2 0 1 9 - 1 0 - 1 8 T 0 7 : 3 1 : 3 9 Z " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" Link ", Ġap ic Header Link ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is Ok ĊĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Service . query Temporal Entity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeq ( entity Uri ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatch Ġ{ Ġtemporal Query Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemporal Query . timer el Ġ== ĠTemp oral Query . Timer el . B ETWEEN Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemporal Query . time !!. isEqual ( Z onedDateTime . parse (" 2 0 1 9 - 1 0 - 1 7 T 0 7 : 3 1 : 3 9 Z ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeq ( APIC _ COMP O UND _ CONTEXT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġconfirm Verified ( query Service ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġreturn Ġan Ġentity Ġwith Ġtwo Ġtemporal Ġproperties Ġevolution `() Ġ{ ĊĠĠĠĠĠĠĠ Ġmock With Incoming And Outgoing Temporal Properties ( false ) ĊĊĠĠĠĠĠĠĠ Ġweb Client . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ ng si - ld / v 1 / temporal / entities /$ entity Uri ?" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" timer el = between & time = 2 0 1 9 - 1 0 - 1 7 T 0 7 : 3 1 : 3 9 Z & endTime = 2 0 1 9 - 1 0 - 1 8 T 0 7 : 3 1 : 3 9 Z " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" Link ", Ġap ic Header Link ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is Ok ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Body (). json Path ("$ "). is Map ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Path (" $. id "). exists () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Path (" $. type "). exists () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Path (" $. incoming . length () "). isEqualTo ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Path (" $. outgoing . length () "). isEqualTo ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Path (" $. @ context "). exists () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġreturn Ġa Ġjson Ġentity Ġwith Ġtwo Ġtemporal Ġproperties Ġevolution `() Ġ{ ĊĠĠĠĠĠĠĠ Ġmock With Incoming And Outgoing Temporal Properties ( false ) ĊĊĠĠĠĠĠĠĠ Ġweb Client . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ ng si - ld / v 1 / temporal / entities /$ entity Uri ?" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" timer el = between & time = 2 0 1 9 - 1 0 - 1 7 T 0 7 : 3 1 : 3 9 Z & endTime = 2 0 1 9 - 1 0 - 1 8 T 0 7 : 3 1 : 3 9 Z " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" Link ", Ġap ic Header Link ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" Accept ", ĠMediaType . APPLICATION _ JSON . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is Ok ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Header (). exists (" Link ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Body (). json Path ("$ "). is Map ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Path (" $. id "). exists () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Path (" $. type "). exists () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Path (" $. incoming . length () "). isEqualTo ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Path (" $. outgoing . length () "). isEqualTo ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Path (" $. @ context "). does NotExist () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġreturn Ġan Ġentity Ġwith Ġtwo Ġtemporal Ġproperties Ġevolution Ġwith Ġtemporal Values Ġoption `() Ġ{ ĊĠĠĠĠĠĠĠ Ġmock With Incoming And Outgoing Temporal Properties ( true ) ĊĊĠĠĠĠĠĠĠ Ġweb Client . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ ng si - ld / v 1 / temporal / entities /$ entity Uri ?" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" timer el = between & time = 2 0 1 9 - 1 0 - 1 7 T 0 7 : 3 1 : 3 9 Z & endTime = 2 0 1 9 - 1 0 - 1 8 T 0 7 : 3 1 : 3 9 Z & options = temporal Values " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" Link ", Ġap ic Header Link ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is Ok ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Body (). json Path ("$ "). is Map ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Path (" $. id "). exists () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Path (" $. type "). exists () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Path ("$ .. observed At "). does NotExist () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Path (" $. incoming [ 0 ]. values . length () "). isEqualTo ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Path (" $. outgoing [ 0 ]. values . length () "). isEqualTo ( 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmock With Incoming And Outgoing Temporal Properties ( with Temporal Values : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġentity Temporal Properties Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġincoming Attr Expanded Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutgoing Attr Expanded Name ĊĠĠĠĠĠĠĠ Ġ). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTemp oral Entity Attribute ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentity Id Ġ= Ġentity Uri , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ" B ee Hive ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattribute Name Ġ= Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattribute ValueType Ġ= ĠTemp oral Entity Attribute . Attribute ValueType . MEAS URE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġentity FileName Ġ= Ġif Ġ( with Temporal Values ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" be eh ive _ with _ two _ temporal _ attributes _ e volution _ temporal _ values . json ld " ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" be eh ive _ with _ two _ temporal _ attributes _ e volution . json ld " ĊĊĠĠĠĠĠĠĠ Ġval Ġentity With 2 temporal E volution s Ġ= Ġdeserialize Object ( load Sample Data ( entity FileName )) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtemporal Entity Attribute Service . get For Entity ( any (), Ġany ()) Ġ} Ġreturns ĠFlux . just ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentity Temporal Properties [ 0 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentity Temporal Properties [ 1 ] ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġattributes Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġincoming Attr Expanded Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutgoing Attr Expanded Name ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= ĠlistOf ( Pair ( 1 5 4 3 , Ġ" 2 0 2 0 - 0 1 - 2 4 T 1 3 : 0 1 : 2 2 . 0 6 6 Z "), ĠPair ( 1 6 0 0 , Ġ" 2 0 2 0 - 0 1 - 2 4 T 1 4 : 0 1 : 2 2 . 0 6 6 Z ")) ĊĠĠĠĠĠĠĠ Ġval Ġatt Instance Results Ġ= Ġattributes . flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSimpl ified Attribute Instance Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemporal Entity Attribute Ġ= ĠUUID . randomUUID (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġit . first , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobserved At Ġ= ĠZ onedDateTime . parse ( it . second ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠlistOf ( Pair ( 0 , Ġentity Temporal Properties [ 0 ]), ĠPair ( 2 , Ġentity Temporal Properties [ 1 ])). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattribute Instance Service . search ( any (), Ġit . second , Ġwith Temporal Values ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġreturns ĠMono . just ( listOf ( att Instance Results [ it . first ], Ġatt Instance Results [ it . first Ġ+ Ġ 1 ])) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġco Every Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Service . query Temporal Entity ( any (), Ġany (), Ġany (), Ġany ()) ĊĠĠĠĠĠĠĠ Ġ} Ġreturns Ġentity With 2 temporal E volution s ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġraise Ġa Ġ 4 0 0 Ġand Ġreturn Ġan Ġerror Ġresponse `() Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġquery Service . parse And Check QueryParams ( any (), Ġany ()) Ġ} Ġthrows ĠBadRequest DataException ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"' timer el ' Ġand Ġ' time ' Ġmust Ġbe Ġused Ġin Ġconjunction " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġweb Client . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/ ng si - ld / v 1 / temporal / entities ? timer el = before ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is BadRequest ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Body (). json ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type ":" https :// uri . et si . org / ng si - ld / errors / BadRequest Data ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" title ":" The Ġrequest Ġincludes Ġinput Ġdata Ġwhich Ġdoes Ġnot Ġmeet Ġthe Ġrequirements Ġof Ġthe Ġoperation ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" detail ":" ' timer el ' Ġand Ġ' time ' Ġmust Ġbe Ġused Ġin Ġconjunction " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġreturn Ġa Ġ 2 0 0 Ġwith Ġempty Ġpayload Ġif Ġno Ġtemporal Ġattribute Ġis Ġfound `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtemporal Query Ġ= ĠTemp oral Query ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimer el Ġ= ĠTemp oral Query . Timer el . B ETWEEN , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Ġ= ĠZ onedDateTime . parse (" 2 0 1 9 - 1 0 - 1 7 T 0 7 : 3 1 : 3 9 Z "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠendTime Ġ= ĠZ onedDateTime . parse (" 2 0 1 9 - 1 0 - 1 8 T 0 7 : 3 1 : 3 9 Z ") ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtemporal Entity Attribute Service . getCount For Entities ( any (), Ġany (), Ġany ()) Ġ} Ġanswers Ġ{ ĠMono . just ( 2 ) Ġ} ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġquery Service . parse And Check QueryParams ( any (), Ġany ()) Ġ} Ġreturns ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Default QueryParams (). copy ( types Ġ= Ġset Of (" B ee Hive "), Ġtemporal Query Ġ= Ġtemporal Query ) ĊĊĠĠĠĠĠĠĠ Ġco Every Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Service . query Temporal Entities ( any (), Ġany ()) ĊĠĠĠĠĠĠĠ Ġ} Ġreturns Ġempty List () ĊĊĠĠĠĠĠĠĠ Ġweb Client . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ ng si - ld / v 1 / temporal / entities ?" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" timer el = between & time = 2 0 1 9 - 1 0 - 1 7 T 0 7 : 3 1 : 3 9 Z & endTime = 2 0 1 9 - 1 0 - 1 8 T 0 7 : 3 1 : 3 9 Z & type = B ee Hive " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" Link ", Ġap ic Header Link ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is Ok ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Body (). json (" [] ") ĊĊĠĠĠĠĠĠĠ Ġverify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Service . parse And Check QueryParams ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . size Ġ== Ġ 4 Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . getFirst (" timer el ") Ġ== Ġ" between " Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . getFirst (" time ") Ġ== Ġ" 2 0 1 9 - 1 0 - 1 7 T 0 7 : 3 1 : 3 9 Z " Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . getFirst (" endTime ") Ġ== Ġ" 2 0 1 9 - 1 0 - 1 8 T 0 7 : 3 1 : 3 9 Z " Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . getFirst (" type ") Ġ== Ġ" B ee Hive " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAP IC _ COMP O UND _ CONTEXT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Service . query Temporal Entities ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatch Ġ{ Ġtemporal Entities Query Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemporal Entities Query . limit Ġ== Ġ 3 0 Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemporal Entities Query . offset Ġ== Ġ 0 Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemporal Entities Query . ids . isEmpty () Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemporal Entities Query . types Ġ== Ġset Of (" B ee Hive ") Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemporal Entities Query . temporal Query Ġ== Ġtemporal Query Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! temporal Entities Query . with Temporal Values ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeq ( APIC _ COMP O UND _ CONTEXT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġconfirm Verified ( attribute Instance Service ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġreturn Ġ 2 0 0 Ġwith Ġjson ld Ġresponse Ġbody Ġfor Ġquery Ġtemporal Ġentities `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfirst Temporal Entity Ġ= Ġdeserialize Object ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Sample Data (" be eh ive _ with _ two _ temporal _ attributes _ e volution . json ld ") ĊĠĠĠĠĠĠĠ Ġ). minus ("@ context ") ĊĠĠĠĠĠĠĠ Ġval Ġsecond Temporal Entity Ġ= Ġdeserialize Object ( load Sample Data (" be eh ive . json ld ")). minus ("@ context ") ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtemporal Entity Attribute Service . getCount For Entities ( any (), Ġany (), Ġany ()) Ġ} Ġanswers Ġ{ ĠMono . just ( 2 ) Ġ} ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġquery Service . parse And Check QueryParams ( any (), Ġany ()) Ġ} Ġreturns Ġbuild Default QueryParams () ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Service . query Temporal Entities ( any (), Ġany ()) ĊĠĠĠĠĠĠĠ Ġ} Ġreturns ĠlistOf ( first Temporal Entity , Ġsecond Temporal Entity ) ĊĊĠĠĠĠĠĠĠ Ġweb Client . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ ng si - ld / v 1 / temporal / entities ?" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" timer el = between & time = 2 0 1 9 - 1 0 - 1 7 T 0 7 : 3 1 : 3 9 Z & endTime = 2 0 1 9 - 1 0 - 1 8 T 0 7 : 3 1 : 3 9 Z & " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type = B ee Hive " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" Link ", Ġap ic Header Link ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is Ok ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Body () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Path ("$ "). isArray ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Path (" $. length () "). isEqualTo ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Path ("$ [ 0 ]. @ context "). exists () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Path ("$ [ 1 ]. @ context "). exists () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġreturn Ġ 2 0 0 Ġwith Ġjson Ġresponse Ġbody Ġfor Ġquery Ġtemporal Ġentities `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfirst Temporal Entity Ġ= Ġdeserialize Object ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Sample Data (" be eh ive _ with _ two _ temporal _ attributes _ e volution . json ld ") ĊĠĠĠĠĠĠĠ Ġ). minus ("@ context ") ĊĠĠĠĠĠĠĠ Ġval Ġsecond Temporal Entity Ġ= Ġdeserialize Object ( load Sample Data (" be eh ive . json ld ")). minus ("@ context ") ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtemporal Entity Attribute Service . getCount For Entities ( any (), Ġany (), Ġany ()) Ġ} Ġanswers Ġ{ ĠMono . just ( 2 ) Ġ} ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġquery Service . parse And Check QueryParams ( any (), Ġany ()) Ġ} Ġreturns Ġbuild Default QueryParams () ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Service . query Temporal Entities ( any (), Ġany ()) ĊĠĠĠĠĠĠĠ Ġ} Ġreturns ĠlistOf ( first Temporal Entity , Ġsecond Temporal Entity ) ĊĊĠĠĠĠĠĠĠ Ġweb Client . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ ng si - ld / v 1 / temporal / entities ?" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" timer el = between & time = 2 0 1 9 - 1 0 - 1 7 T 0 7 : 3 1 : 3 9 Z & endTime = 2 0 1 9 - 1 0 - 1 8 T 0 7 : 3 1 : 3 9 Z & " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type = B ee Hive " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" Accept ", ĠMediaType . APPLICATION _ JSON . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" Link ", Ġap ic Header Link ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is Ok ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Header (). exists (" Link ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Body () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Path ("$ "). isArray ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Path (" $. length () "). isEqualTo ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Path ("$ [ 0 ]. @ context "). does NotExist () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Path ("$ [ 1 ]. @ context "). does NotExist () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ With Anonymous User ĊĠĠĠ Ġfun Ġ` it Ġshould Ġnot Ġauthorize Ġan Ġanonymous Ġto Ġcall Ġthe ĠAPI `() Ġ{ ĊĠĠĠĠĠĠĠ Ġweb Client . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/ ng si - ld / v 1 / temporal / entities / urn : ng si - ld : Sensor : 0 0 2 2 CCC ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is Forbidden ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġparse Ġa Ġquery Ġcontaining Ġone Ġattrs Ġparameter `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠqueryParams Ġ= ĠLinked Multi Value Map < String , ĠString >() ĊĠĠĠĠĠĠĠ ĠqueryParams . add (" timer el ", Ġ" after ") ĊĠĠĠĠĠĠĠ ĠqueryParams . add (" time ", Ġ" 2 0 1 9 - 1 0 - 1 7 T 0 7 : 3 1 : 3 9 Z ") ĊĠĠĠĠĠĠĠ ĠqueryParams . add (" attrs ", Ġ" outgoing ") ĊĊĠĠĠĠĠĠĠ Ġval Ġtemporal Query Ġ= Ġbuild Temporal Query ( queryParams , ĠAP IC _ COMP O UND _ CONTEXT ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( temporal Query . expanded Attrs . size Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( temporal Query . expanded Attrs . contains ( outgoing Attr Expanded Name )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġparse Ġa Ġquery Ġcontaining Ġtwo Ġattrs Ġparameter `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠqueryParams Ġ= ĠLinked Multi Value Map < String , ĠString >() ĊĠĠĠĠĠĠĠ ĠqueryParams . add (" timer el ", Ġ" after ") ĊĠĠĠĠĠĠĠ ĠqueryParams . add (" time ", Ġ" 2 0 1 9 - 1 0 - 1 7 T 0 7 : 3 1 : 3 9 Z ") ĊĠĠĠĠĠĠĠ ĠqueryParams . add (" attrs ", Ġ" incoming , outgoing ") ĊĊĠĠĠĠĠĠĠ Ġval Ġtemporal Query Ġ= Ġbuild Temporal Query ( queryParams , ĠAP IC _ COMP O UND _ CONTEXT ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( temporal Query . expanded Attrs . size Ġ== Ġ 2 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemporal Query . expanded Attrs . contains All ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutgoing Attr Expanded Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġincoming Attr Expanded Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġparse Ġa Ġquery Ġcontaining Ġno Ġattrs Ġparameter `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠqueryParams Ġ= ĠLinked Multi Value Map < String , ĠString >() ĊĠĠĠĠĠĠĠ ĠqueryParams . add (" timer el ", Ġ" after ") ĊĠĠĠĠĠĠĠ ĠqueryParams . add (" time ", Ġ" 2 0 1 9 - 1 0 - 1 7 T 0 7 : 3 1 : 3 9 Z ") ĊĊĠĠĠĠĠĠĠ Ġval Ġtemporal Query Ġ= Ġbuild Temporal Query ( queryParams , ĠAP IC _ COMP O UND _ CONTEXT ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( temporal Query . expanded Attrs . isEmpty ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġparse Ġlast N Ġparameter Ġif Ġit Ġis Ġa Ġpositive Ġinteger `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠqueryParams Ġ= ĠLinked Multi Value Map < String , ĠString >() ĊĠĠĠĠĠĠĠ ĠqueryParams . add (" timer el ", Ġ" after ") ĊĠĠĠĠĠĠĠ ĠqueryParams . add (" time ", Ġ" 2 0 1 9 - 1 0 - 1 7 T 0 7 : 3 1 : 3 9 Z ") ĊĠĠĠĠĠĠĠ ĠqueryParams . add (" last N ", Ġ" 2 ") ĊĊĠĠĠĠĠĠĠ Ġval Ġtemporal Query Ġ= Ġbuild Temporal Query ( queryParams , ĠAP IC _ COMP O UND _ CONTEXT ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( temporal Query . last N Ġ== Ġ 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġignore Ġlast N Ġparameter Ġif Ġit Ġis Ġnot Ġan Ġinteger `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠqueryParams Ġ= ĠLinked Multi Value Map < String , ĠString >() ĊĠĠĠĠĠĠĠ ĠqueryParams . add (" timer el ", Ġ" after ") ĊĠĠĠĠĠĠĠ ĠqueryParams . add (" time ", Ġ" 2 0 1 9 - 1 0 - 1 7 T 0 7 : 3 1 : 3 9 Z ") ĊĠĠĠĠĠĠĠ ĠqueryParams . add (" last N ", Ġ" A ") ĊĊĠĠĠĠĠĠĠ Ġval Ġtemporal Query Ġ= Ġbuild Temporal Query ( queryParams , ĠAP IC _ COMP O UND _ CONTEXT ) ĊĊĠĠĠĠĠĠĠ ĠassertNull ( temporal Query . last N ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġignore Ġlast N Ġparameter Ġif Ġit Ġis Ġnot Ġa Ġpositive Ġinteger `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠqueryParams Ġ= ĠLinked Multi Value Map < String , ĠString >() ĊĠĠĠĠĠĠĠ ĠqueryParams . add (" timer el ", Ġ" after ") ĊĠĠĠĠĠĠĠ ĠqueryParams . add (" time ", Ġ" 2 0 1 9 - 1 0 - 1 7 T 0 7 : 3 1 : 3 9 Z ") ĊĠĠĠĠĠĠĠ ĠqueryParams . add (" last N ", Ġ"- 2 ") ĊĊĠĠĠĠĠĠĠ Ġval Ġtemporal Query Ġ= Ġbuild Temporal Query ( queryParams , ĠAP IC _ COMP O UND _ CONTEXT ) ĊĊĠĠĠĠĠĠĠ ĠassertNull ( temporal Query . last N ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġtreat Ġtime Ġand Ġtimer el Ġproperties Ġas Ġoptional `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠqueryParams Ġ= ĠLinked Multi Value Map < String , ĠString >() ĊĊĠĠĠĠĠĠĠ Ġval Ġtemporal Query Ġ= Ġbuild Temporal Query ( queryParams , ĠAP IC _ COMP O UND _ CONTEXT ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( null , Ġtemporal Query . time ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( null , Ġtemporal Query . timer el ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` query Ġtemporal Ġentity Ġshould Ġreturn Ġ 2 0 0 Ġwith Ġprev Ġlink Ġheader Ġif Ġexists `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġfirst Temporal Entity Ġ= Ġdeserialize Object ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Sample Data (" be eh ive _ with _ two _ temporal _ attributes _ e volution . json ld ") ĊĠĠĠĠĠĠĠ Ġ). minus ("@ context ") ĊĠĠĠĠĠĠĠ Ġval Ġsecond Temporal Entity Ġ= Ġdeserialize Object ( load Sample Data (" be eh ive . json ld ")). minus ("@ context ") ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtemporal Entity Attribute Service . getCount For Entities ( any (), Ġany (), Ġany ()) Ġ} Ġreturns ĠMono . just ( 2 ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġquery Service . parse And Check QueryParams ( any (), Ġany ()) Ġ} Ġreturns ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Default QueryParams (). copy ( limit Ġ= Ġ 1 , Ġoffset Ġ= Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Service . query Temporal Entities ( any (), Ġany ()) ĊĠĠĠĠĠĠĠ Ġ} Ġreturns ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( first Temporal Entity , Ġsecond Temporal Entity ) ĊĊĠĠĠĠĠĠĠ Ġweb Client . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ ng si - ld / v 1 / temporal / entities ?" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" timer el = between & time = 2 0 1 9 - 1 0 - 1 7 T 0 7 : 3 1 : 3 9 Z & endTime = 2 0 1 9 - 1 0 - 1 8 T 0 7 : 3 1 : 3 9 Z & " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type = B ee Hive & limit = 1 & offset = 2 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is Ok ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Header () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. value Equals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Link ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"</ ng si - ld / v 1 / temporal / entities ?" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" timer el = between & time = 2 0 1 9 - 1 0 - 1 7 T 0 7 : 3 1 : 3 9 Z & endTime = 2 0 1 9 - 1 0 - 1 8 T 0 7 : 3 1 : 3 9 Z & " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type = B ee Hive & limit = 1 & offset = 1 >; rel =\" prev \"; type =\" application / ld + json \"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` query Ġtemporal Ġentity Ġshould Ġreturn Ġ 2 0 0 Ġand Ġempty Ġresponse Ġif Ġrequested Ġoffset Ġdoes Ġnot Ġexists `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtemporal Entity Attribute Service . getCount For Entities ( any (), Ġany (), Ġany ()) Ġ} Ġreturns ĠMono . just ( 2 ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġquery Service . parse And Check QueryParams ( any (), Ġany ()) Ġ} Ġreturns Ġbuild Default QueryParams () ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġquery Service . query Temporal Entities ( any (), Ġany ()) Ġ} Ġreturns Ġempty () ĊĊĠĠĠĠĠĠĠ Ġweb Client . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ ng si - ld / v 1 / temporal / entities ?" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" timer el = between & time = 2 0 1 9 - 1 0 - 1 7 T 0 7 : 3 1 : 3 9 Z & endTime = 2 0 1 9 - 1 0 - 1 8 T 0 7 : 3 1 : 3 9 Z & " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type = B ee Hive & limit = 1 & offset = 9 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is Ok ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Body (). json (" [] ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` query Ġtemporal Ġentities Ġshould Ġreturn Ġ 2 0 0 Ġand Ġthe Ġnumber Ġof Ġresults Ġif Ġcount Ġis Ġasked Ġfor `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtemporal Entity Attribute Service . getCount For Entities ( any (), Ġany (), Ġany ()) Ġ} Ġreturns ĠMono . just ( 2 ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġquery Service . parse And Check QueryParams ( any (), Ġany ()) Ġ} Ġreturns Ġbuild Default QueryParams () ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġquery Service . query Temporal Entities ( any (), Ġany ()) Ġ} Ġreturns Ġempty () ĊĊĠĠĠĠĠĠĠ Ġweb Client . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ ng si - ld / v 1 / temporal / entities ?" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" timer el = between & time = 2 0 1 9 - 1 0 - 1 7 T 0 7 : 3 1 : 3 9 Z & endTime = 2 0 1 9 - 1 0 - 1 8 T 0 7 : 3 1 : 3 9 Z & " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type = B ee Hive & limit = 0 & offset = 9 & count = true " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is Ok ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Header (). value Equals ( RESULTS _ COUNT _ HEADER , Ġ" 2 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Body () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` query Ġtemporal Ġentity Ġshould Ġreturn Ġ 2 0 0 Ġwith Ġnext Ġlink Ġheader Ġif Ġexists `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfirst Temporal Entity Ġ= Ġdeserialize Object ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Sample Data (" be eh ive _ with _ two _ temporal _ attributes _ e volution . json ld ") ĊĠĠĠĠĠĠĠ Ġ). minus ("@ context ") ĊĠĠĠĠĠĠĠ Ġval Ġsecond Temporal Entity Ġ= Ġdeserialize Object ( load Sample Data (" be eh ive . json ld ")). minus ("@ context ") ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtemporal Entity Attribute Service . getCount For Entities ( any (), Ġany (), Ġany ()) Ġ} Ġreturns ĠMono . just ( 2 ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġquery Service . parse And Check QueryParams ( any (), Ġany ()) Ġ} Ġreturns ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Default QueryParams (). copy ( limit Ġ= Ġ 1 , Ġoffset Ġ= Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Service . query Temporal Entities ( any (), Ġany ()) ĊĠĠĠĠĠĠĠ Ġ} Ġreturns ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( first Temporal Entity , Ġsecond Temporal Entity ) ĊĊĠĠĠĠĠĠĠ Ġweb Client . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ ng si - ld / v 1 / temporal / entities ?" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" timer el = between & time = 2 0 1 9 - 1 0 - 1 7 T 0 7 : 3 1 : 3 9 Z & endTime = 2 0 1 9 - 1 0 - 1 8 T 0 7 : 3 1 : 3 9 Z & " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type = B ee Hive & limit = 1 & offset = 0 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is Ok ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Header () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. value Equals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Link ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"</ ng si - ld / v 1 / temporal / entities ?" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" timer el = between & time = 2 0 1 9 - 1 0 - 1 7 T 0 7 : 3 1 : 3 9 Z & endTime = 2 0 1 9 - 1 0 - 1 8 T 0 7 : 3 1 : 3 9 Z & " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type = B ee Hive & limit = 1 & offset = 1 >; rel =\" next \"; type =\" application / ld + json \"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` query Ġtemporal Ġentity Ġshould Ġreturn Ġ 2 0 0 Ġwith Ġprev Ġand Ġnext Ġlink Ġheader Ġif Ġexists `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfirst Temporal Entity Ġ= Ġdeserialize Object ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Sample Data (" be eh ive _ with _ two _ temporal _ attributes _ e volution . json ld ") ĊĠĠĠĠĠĠĠ Ġ). minus ("@ context ") ĊĠĠĠĠĠĠĠ Ġval Ġsecond Temporal Entity Ġ= Ġdeserialize Object ( load Sample Data (" be eh ive . json ld ")). minus ("@ context ") ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtemporal Entity Attribute Service . getCount For Entities ( any (), Ġany (), Ġany ()) Ġ} Ġreturns ĠMono . just ( 3 ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġquery Service . parse And Check QueryParams ( any (), Ġany ()) Ġ} Ġreturns ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Default QueryParams (). copy ( limit Ġ= Ġ 1 , Ġoffset Ġ= Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Service . query Temporal Entities ( any (), Ġany ()) ĊĠĠĠĠĠĠĠ Ġ} Ġreturns ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( first Temporal Entity , Ġsecond Temporal Entity ) ĊĊĠĠĠĠĠĠĠ Ġweb Client . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ ng si - ld / v 1 / temporal / entities ?" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" timer el = between & time = 2 0 1 9 - 1 0 - 1 7 T 0 7 : 3 1 : 3 9 Z & endTime = 2 0 1 9 - 1 0 - 1 8 T 0 7 : 3 1 : 3 9 Z & " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type = B ee Hive & limit = 1 & offset = 1 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is Ok ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Header () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. value Equals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Link ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"</ ng si - ld / v 1 / temporal / entities ?" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" timer el = between & time = 2 0 1 9 - 1 0 - 1 7 T 0 7 : 3 1 : 3 9 Z & endTime = 2 0 1 9 - 1 0 - 1 8 T 0 7 : 3 1 : 3 9 Z & " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type = B ee Hive & limit = 1 & offset = 0 >; rel =\" prev \"; type =\" application / ld + json \"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"</ ng si - ld / v 1 / temporal / entities ?" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" timer el = between & time = 2 0 1 9 - 1 0 - 1 7 T 0 7 : 3 1 : 3 9 Z & endTime = 2 0 1 9 - 1 0 - 1 8 T 0 7 : 3 1 : 3 9 Z & " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type = B ee Hive & limit = 1 & offset = 2 >; rel =\" next \"; type =\" application / ld + json \"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` query Ġtemporal Ġentity Ġshould Ġreturn Ġ 4 0 0 Ġif Ġrequested Ġoffset Ġis Ġless Ġthan Ġzero `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġquery Service . parse And Check QueryParams ( any (), Ġany ()) Ġ} Ġreturns Ġbuild Default QueryParams () ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Service . query Temporal Entities ( any (), Ġany ()) ĊĠĠĠĠĠĠĠ Ġ} Ġthrows ĠBadRequest DataException ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Offset Ġmust Ġbe Ġgreater Ġthan Ġzero Ġand Ġlimit Ġmust Ġbe Ġstrictly Ġgreater Ġthan Ġzero " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġweb Client . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ ng si - ld / v 1 / temporal / entities ?" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" timer el = between & time = 2 0 1 9 - 1 0 - 1 7 T 0 7 : 3 1 : 3 9 Z & endTime = 2 0 1 9 - 1 0 - 1 8 T 0 7 : 3 1 : 3 9 Z & " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type = B ee Hive & limit = 1 & offset =- 1 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is BadRequest ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Body (). json ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type ":" https :// uri . et si . org / ng si - ld / errors / BadRequest Data ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" title ":" The Ġrequest Ġincludes Ġinput Ġdata Ġwhich Ġdoes Ġnot Ġmeet Ġthe Ġrequirements Ġof Ġthe Ġoperation ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" detail ":" Offset Ġmust Ġbe Ġgreater Ġthan Ġzero Ġand Ġlimit Ġmust Ġbe Ġstrictly Ġgreater Ġthan Ġzero " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` query Ġtemporal Ġentity Ġshould Ġreturn Ġ 4 0 0 Ġif Ġlimit Ġis Ġequal Ġor Ġless Ġthan Ġzero `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġquery Service . parse And Check QueryParams ( any (), Ġany ()) Ġ} Ġreturns Ġbuild Default QueryParams () ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Service . query Temporal Entities ( any (), Ġany ()) ĊĠĠĠĠĠĠĠ Ġ} Ġthrows ĠBadRequest DataException ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Offset Ġmust Ġbe Ġgreater Ġthan Ġzero Ġand Ġlimit Ġmust Ġbe Ġstrictly Ġgreater Ġthan Ġzero " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġweb Client . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ ng si - ld / v 1 / temporal / entities ?" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" timer el = between & time = 2 0 1 9 - 1 0 - 1 7 T 0 7 : 3 1 : 3 9 Z & endTime = 2 0 1 9 - 1 0 - 1 8 T 0 7 : 3 1 : 3 9 Z & " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type = B ee Hive & limit =- 1 & offset = 1 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is BadRequest ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Body (). json ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type ":" https :// uri . et si . org / ng si - ld / errors / BadRequest Data ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" title ":" The Ġrequest Ġincludes Ġinput Ġdata Ġwhich Ġdoes Ġnot Ġmeet Ġthe Ġrequirements Ġof Ġthe Ġoperation ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" detail ":" Offset Ġmust Ġbe Ġgreater Ġthan Ġzero Ġand Ġlimit Ġmust Ġbe Ġstrictly Ġgreater Ġthan Ġzero " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` query Ġtemporal Ġentity Ġshould Ġreturn Ġ 4 0 0 Ġif Ġlimit Ġis Ġgreater Ġthan Ġthe Ġmaximum Ġauthorized Ġlimit `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġquery Service . parse And Check QueryParams ( any (), Ġany ()) Ġ} Ġreturns Ġbuild Default QueryParams () ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Service . query Temporal Entities ( any (), Ġany ()) ĊĠĠĠĠĠĠĠ Ġ} Ġthrows ĠBadRequest DataException ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" You Ġasked Ġfor Ġ 2 0 0 Ġresults , Ġbut Ġthe Ġsupported Ġmaximum Ġlimit Ġis Ġ 1 0 0 " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġweb Client . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ ng si - ld / v 1 / temporal / entities ?" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" timer el = between & time = 2 0 1 9 - 1 0 - 1 7 T 0 7 : 3 1 : 3 9 Z & endTime = 2 0 1 9 - 1 0 - 1 8 T 0 7 : 3 1 : 3 9 Z & " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type = B ee Hive & limit = 2 0 0 & offset = 1 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is BadRequest ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Body (). json ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type ":" https :// uri . et si . org / ng si - ld / errors / BadRequest Data ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" title ":" The Ġrequest Ġincludes Ġinput Ġdata Ġwhich Ġdoes Ġnot Ġmeet Ġthe Ġrequirements Ġof Ġthe Ġoperation ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" detail ":" You Ġasked Ġfor Ġ 2 0 0 Ġresults , Ġbut Ġthe Ġsupported Ġmaximum Ġlimit Ġis Ġ 1 0 0 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbuild Default QueryParams (): ĠTemp oral Entities Query Ġ= ĊĠĠĠĠĠĠĠ ĠTemp oral Entities Query ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġids Ġ= Ġempty Set (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtypes Ġ= Ġempty Set (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemporal Query Ġ= ĠTemp oral Query (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Temporal Values Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlimit Ġ= Ġ 3 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) Ċ } Ċ