Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vf-track-trace-ts
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Value Flows
VF Code Experiments
vf-track-trace-ts
Commits
70b817ea
Commit
70b817ea
authored
Jan 22, 2019
by
elf Pavlik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
only RDFJS Source interface needed
parent
3388000c
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
10 additions
and
10 deletions
+10
-10
index.ts
index.ts
+10
-10
No files found.
index.ts
View file @
70b817ea
const
nn
=
require
(
'
@rdfjs/data-model
'
).
namedNode
const
namespace
=
require
(
'
@rdfjs/namespace
'
)
import
{
Quad
,
NamedNode
,
S
tore
,
Term
}
from
'
rdf-js
'
import
{
Quad
,
NamedNode
,
S
ource
}
from
'
rdf-js
'
export
interface
ResultNode
{
type
:
NamedNode
,
...
...
@@ -22,7 +22,7 @@ function objects (quads :Quad[]) {
return
quads
.
map
(
quad
=>
quad
.
object
as
NamedNode
)
}
async
function
match
(
store
:
S
tor
e
,
subject
?:
NamedNode
,
predicate
?:
NamedNode
,
object
?:
NamedNode
,
graph
?:
NamedNode
)
{
async
function
match
(
store
:
S
ourc
e
,
subject
?:
NamedNode
,
predicate
?:
NamedNode
,
object
?:
NamedNode
,
graph
?:
NamedNode
)
{
const
results
:
Quad
[]
=
[]
// @ts-ignore
for
await
(
const
quad
of
store
.
match
(
subject
,
predicate
,
object
,
graph
))
{
...
...
@@ -33,23 +33,23 @@ async function match (store :Store, subject ?:NamedNode, predicate ?:NamedNode,
// TODO: use https://github.com/rdf-ext/clownface
async
function
outNodes
(
store
:
S
tor
e
,
subject
:
NamedNode
,
predicate
:
NamedNode
)
{
async
function
outNodes
(
store
:
S
ourc
e
,
subject
:
NamedNode
,
predicate
:
NamedNode
)
{
return
objects
(
await
match
(
store
,
subject
,
predicate
,
null
))
}
async
function
inNodes
(
store
:
S
tor
e
,
object
:
NamedNode
,
predicate
:
NamedNode
)
{
async
function
inNodes
(
store
:
S
ourc
e
,
object
:
NamedNode
,
predicate
:
NamedNode
)
{
return
subjects
(
await
match
(
store
,
null
,
predicate
,
object
))
}
export
function
track
(
store
:
S
tor
e
,
iri
:
string
)
:
AsyncIterableIterator
<
ResultNode
>
export
function
track
(
store
:
S
tor
e
,
iri
:
NamedNode
)
:
AsyncIterableIterator
<
ResultNode
>
export
function
track
(
store
:
S
ourc
e
,
iri
:
string
)
:
AsyncIterableIterator
<
ResultNode
>
export
function
track
(
store
:
S
ourc
e
,
iri
:
NamedNode
)
:
AsyncIterableIterator
<
ResultNode
>
export
async
function
*
track
(
store
:
any
,
iri
:
any
)
:
AsyncIterableIterator
<
ResultNode
>
{
if
(
!
iri
.
termType
)
iri
=
nn
(
iri
)
const
visited
:
NamedNode
[]
=
[]
yield
*
await
tracker
(
store
,
visited
,
iri
as
NamedNode
)
}
async
function
*
tracker
(
store
:
S
tor
e
,
visited
:
NamedNode
[],
current
:
NamedNode
,
distance
=
0
)
:
AsyncIterableIterator
<
ResultNode
>
{
async
function
*
tracker
(
store
:
S
ourc
e
,
visited
:
NamedNode
[],
current
:
NamedNode
,
distance
=
0
)
:
AsyncIterableIterator
<
ResultNode
>
{
if
(
visited
.
some
(
node
=>
node
.
equals
(
current
)))
return
visited
.
push
(
current
)
const
types
=
await
outNodes
(
store
,
current
,
ns
.
rdf
(
'
type
'
))
...
...
@@ -91,15 +91,15 @@ async function * tracker (store :Store, visited :NamedNode[], current :NamedNode
}
}
export
function
trace
(
store
:
S
tor
e
,
iri
:
string
)
:
AsyncIterableIterator
<
ResultNode
>
export
function
trace
(
store
:
S
tor
e
,
iri
:
NamedNode
)
:
AsyncIterableIterator
<
ResultNode
>
export
function
trace
(
store
:
S
ourc
e
,
iri
:
string
)
:
AsyncIterableIterator
<
ResultNode
>
export
function
trace
(
store
:
S
ourc
e
,
iri
:
NamedNode
)
:
AsyncIterableIterator
<
ResultNode
>
export
async
function
*
trace
(
store
:
any
,
iri
:
any
)
:
AsyncIterableIterator
<
ResultNode
>
{
if
(
!
iri
.
termType
)
iri
=
nn
(
iri
)
const
visited
:
NamedNode
[]
=
[]
yield
*
await
tracer
(
store
,
visited
,
iri
as
NamedNode
)
}
async
function
*
tracer
(
store
:
S
tor
e
,
visited
:
NamedNode
[],
current
:
NamedNode
,
distance
=
0
)
:
AsyncIterableIterator
<
ResultNode
>
{
async
function
*
tracer
(
store
:
S
ourc
e
,
visited
:
NamedNode
[],
current
:
NamedNode
,
distance
=
0
)
:
AsyncIterableIterator
<
ResultNode
>
{
if
(
visited
.
some
(
node
=>
node
.
equals
(
current
)))
return
visited
.
push
(
current
)
const
types
=
await
outNodes
(
store
,
current
,
ns
.
rdf
(
'
type
'
))
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment