Class: ResourceLinkQuery\<Type, QueryInput, Plugins>
Represents a query over multiple datasources and constituting muliple resources.
Example
import { ProfileShapeType } from "./.ldo/Profile.shapeType.ts";
// Create a link query
const linkQuery = ldoDataset
.usingType(ProfileShapeType)
.startLinkQuery(
"http://example.com/profile/card",
"http://example.com/profile/card#me",
{
name: true,
knows: {
name: true,
},
},
}
);
// Susbscribe to this link query, automaticically updating the dataset when
// something from the link query is changed.
await linkQuery.subscribe();
Type parameters
Name | Type |
---|---|
Type |
extends LdoBase |
QueryInput |
extends LQInput \<Type > |
Plugins |
extends ConnectedPlugin [] |
Implements
ILinkQuery
\<Type
,QueryInput
>
Constructors
constructor
• new ResourceLinkQuery\<Type
, QueryInput
, Plugins
>(parentDataset
, shapeType
, ldoBuilder
, startingResource
, startingSubject
, linkQueryInput
): ResourceLinkQuery
\<Type
, QueryInput
, Plugins
>
Type parameters
Name | Type |
---|---|
Type |
extends LdoBase |
QueryInput |
extends Partial \<{ [key in string | number | symbol]: LQInputFlattenSet\<Type[key]> }> |
Plugins |
extends ConnectedPlugin \<any , any , any , any , any >[] |
Parameters
Name | Type | Description |
---|---|---|
parentDataset |
IConnectedLdoDataset \<Plugins > |
The dataset for which this link query is a part |
shapeType |
ShapeType \<Type > |
A ShapeType for the link query to follow |
ldoBuilder |
IConnectedLdoBuilder \<Type , Plugins > |
An LdoBuilder associated with the dataset |
startingResource |
Plugins [number ]["types" ]["resource" ] |
The resource to explore first in the link query |
startingSubject |
string | SubjectNode |
The starting point of the link query |
linkQueryInput |
QueryInput |
A definition of the link query |
Returns
ResourceLinkQuery
\<Type
, QueryInput
, Plugins
>
Defined in
packages/connected/src/linkTraversal/ResourceLinkQuery.ts:73
Properties
activeResourceSubscriptions
• Protected
activeResourceSubscriptions: Record
\<string
, string
> = {}
Defined in
packages/connected/src/linkTraversal/ResourceLinkQuery.ts:53
curOnDataChanged
• Protected
curOnDataChanged: undefined
| nodeEventListener
\<Quad
>
Defined in
packages/connected/src/linkTraversal/ResourceLinkQuery.ts:57
ldoBuilder
• Protected
ldoBuilder: IConnectedLdoBuilder
\<Type
, Plugins
>
An LdoBuilder associated with the dataset
Defined in
packages/connected/src/linkTraversal/ResourceLinkQuery.ts:76
linkQueryInput
• Protected
linkQueryInput: QueryInput
A definition of the link query
Defined in
packages/connected/src/linkTraversal/ResourceLinkQuery.ts:79
parentDataset
• Protected
parentDataset: IConnectedLdoDataset
\<Plugins
>
The dataset for which this link query is a part
Defined in
packages/connected/src/linkTraversal/ResourceLinkQuery.ts:74
previousTransactionId
• Protected
previousTransactionId: string
= "INIT"
Defined in
packages/connected/src/linkTraversal/ResourceLinkQuery.ts:50
resourcesWithSubscriptionInProgress
• Protected
resourcesWithSubscriptionInProgress: Record
\<string
, undefined
| Promise
\<void
>> = {}
Defined in
packages/connected/src/linkTraversal/ResourceLinkQuery.ts:59
shapeType
• Protected
shapeType: ShapeType
\<Type
>
A ShapeType for the link query to follow
Defined in
packages/connected/src/linkTraversal/ResourceLinkQuery.ts:75
startingResource
• Protected
startingResource: Plugins
[number
]["types"
]["resource"
]
The resource to explore first in the link query
Defined in
packages/connected/src/linkTraversal/ResourceLinkQuery.ts:77
startingSubject
• Protected
startingSubject: string
| SubjectNode
The starting point of the link query
Defined in
packages/connected/src/linkTraversal/ResourceLinkQuery.ts:78
thisUnsubscribeIds
• Protected
thisUnsubscribeIds: Set
\<string
>
Defined in
packages/connected/src/linkTraversal/ResourceLinkQuery.ts:55
Methods
fromSubject
▸ fromSubject(): ExpandDeep
\<LQReturn
\<Type
, QueryInput
>>
Returns
ExpandDeep
\<LQReturn
\<Type
, QueryInput
>>
Implementation of
Defined in
packages/connected/src/linkTraversal/ResourceLinkQuery.ts:276
fullUnsubscribe
▸ fullUnsubscribe(): Promise
\<void
>
Returns
Promise
\<void
>
Defined in
packages/connected/src/linkTraversal/ResourceLinkQuery.ts:252
getSubscribedResources
▸ getSubscribedResources(): Plugins
[number
]["types"
]["resource"
][]
Returns
Plugins
[number
]["types"
]["resource"
][]
Defined in
packages/connected/src/linkTraversal/ResourceLinkQuery.ts:282
run
▸ run(options?
): Promise
\<ExpandDeep
\<LQReturn
\<Type
, QueryInput
>>>
Runs this link query, returning the result
Parameters
Name | Type | Description |
---|---|---|
options? |
Object |
Options for how to run the link query |
options.reload? |
boolean |
- |
Returns
Promise
\<ExpandDeep
\<LQReturn
\<Type
, QueryInput
>>>
A subset of the ShapeType as defined by the LinkQuery
Example
import { ProfileShapeType } from "./.ldo/Profile.shapeType.ts";
// Create a link query
const linkQuery = ldoDataset
.usingType(ProfileShapeType)
.startLinkQuery(
"http://example.com/profile/card",
"http://example.com/profile/card#me",
{
name: true,
knows: {
name: true,
},
},
}
);
// Susbscribe to this link query, automaticically updating the dataset when
// something from the link query is changed.
const result = await linkQuery.read();
console.log(result.name);
result.knows.forEach((person) => console.log(person.name));
// The following will type-error. Despite "phone" existing on a Profile,
// it was not covered by the link query.
console.log(result.phone);
Implementation of
Defined in
packages/connected/src/linkTraversal/ResourceLinkQuery.ts:115
subscribe
▸ subscribe(): Promise
\<string
>
Subscribes to the data defined by the link query, updating the dataset if any changes are made.
Returns
Promise
\<string
>
An unsubscribeId
Example
import { ProfileShapeType } from "./.ldo/Profile.shapeType.ts";
// Create a link query
const linkQuery = ldoDataset
.usingType(ProfileShapeType)
.startLinkQuery(
"http://example.com/profile/card",
"http://example.com/profile/card#me",
{
name: true,
knows: {
name: true,
},
},
}
);
// Susbscribe to this link query, automaticically updating the dataset when
// something from the link query is changed.
const unsubscribeId = await linkQuery.subscribe();
// Now, let's imagine the following triple was added to
"http://example.com/profile/card":
<http://example.com/profile/card#me> <http://xmlns.com/foaf/0.1/knows> <http://example2.com/profile/card#me>
Because you're subscribed, the dataset will automatically be updated.
// End subscription
linkQuery.unsubscribe(unsubscribeId);
Implementation of
Defined in
packages/connected/src/linkTraversal/ResourceLinkQuery.ts:165
unsubscribe
▸ unsubscribe(unsubscribeId
): Promise
\<void
>
Parameters
Name | Type |
---|---|
unsubscribeId |
string |
Returns
Promise
\<void
>
Implementation of
Defined in
packages/connected/src/linkTraversal/ResourceLinkQuery.ts:264
unsubscribeAll
▸ unsubscribeAll(): Promise
\<void
>
Returns
Promise
\<void
>
Implementation of
Defined in
packages/connected/src/linkTraversal/ResourceLinkQuery.ts:271
unsubscribeFromResource
▸ unsubscribeFromResource(uri
): Promise
\<void
>
Parameters
Name | Type |
---|---|
uri |
any |
Returns
Promise
\<void
>
Defined in
packages/connected/src/linkTraversal/ResourceLinkQuery.ts:245