Skip to content

Commit 1849ba5

Browse files
committed
lattice/ -- 整理文件
1 parent 9a636e1 commit 1849ba5

File tree

5 files changed

+70
-55
lines changed

5 files changed

+70
-55
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import {
2+
conceptFromEntities,
3+
createConceptSet,
4+
type Concept,
5+
} from "../concept/index.js"
6+
import type { Context } from "../context/index.js"
7+
import type { QuotientSet } from "../utils/QuotientSet.js"
8+
9+
export function generateAttributeConceptSet(
10+
context: Context,
11+
): QuotientSet<Concept> {
12+
const conceptSet = createConceptSet()
13+
14+
for (const attribute of context.attributes) {
15+
const attributeConcept = conceptFromEntities(context, [attribute])
16+
conceptSet.add(attributeConcept)
17+
}
18+
19+
return conceptSet
20+
}

src/lattice/generateConceptSet.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import { conceptJoin, type Concept } from "../concept/index.js"
2+
import type { Context } from "../context/index.js"
3+
import type { QuotientSet } from "../utils/QuotientSet.js"
4+
import { generateAttributeConceptSet } from "./generateAttributeConceptSet.js"
5+
import { generateEntityConceptSet } from "./generateEntityConceptSet.js"
6+
7+
export function generateConceptSet(context: Context): QuotientSet<Concept> {
8+
const targets = generateEntityConceptSet(context)
9+
const results = generateAttributeConceptSet(context).union(targets)
10+
11+
while (true) {
12+
const first = targets.representatives.shift()
13+
if (first === undefined) {
14+
break
15+
}
16+
17+
for (const target of targets.representatives) {
18+
const concept = conceptJoin(first, target)
19+
if (!results.has(concept)) {
20+
targets.add(concept)
21+
results.add(concept)
22+
}
23+
}
24+
}
25+
26+
return results
27+
}

src/lattice/generateConcepts.ts

Lines changed: 2 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,6 @@
1-
import {
2-
conceptFromEntities,
3-
conceptJoin,
4-
createConceptSet,
5-
type Concept,
6-
} from "../concept/index.js"
1+
import { type Concept } from "../concept/index.js"
72
import type { Context } from "../context/index.js"
8-
import type { QuotientSet } from "../utils/QuotientSet.js"
9-
10-
export function generateEntityConceptSet(
11-
context: Context,
12-
): QuotientSet<Concept> {
13-
const conceptSet = createConceptSet()
14-
15-
for (const entity of context.entities) {
16-
const entityConcept = conceptFromEntities(context, [entity])
17-
conceptSet.add(entityConcept)
18-
}
19-
20-
return conceptSet
21-
}
22-
23-
export function generateAttributeConceptSet(
24-
context: Context,
25-
): QuotientSet<Concept> {
26-
const conceptSet = createConceptSet()
27-
28-
for (const attribute of context.attributes) {
29-
const attributeConcept = conceptFromEntities(context, [attribute])
30-
conceptSet.add(attributeConcept)
31-
}
32-
33-
return conceptSet
34-
}
35-
36-
export function generateConceptSet(context: Context): QuotientSet<Concept> {
37-
const targets = generateEntityConceptSet(context)
38-
const results = generateAttributeConceptSet(context).union(targets)
39-
40-
while (true) {
41-
const first = targets.representatives.shift()
42-
if (first === undefined) {
43-
break
44-
}
45-
46-
for (const target of targets.representatives) {
47-
const concept = conceptJoin(first, target)
48-
if (!results.has(concept)) {
49-
targets.add(concept)
50-
results.add(concept)
51-
}
52-
}
53-
}
54-
55-
return results
56-
}
3+
import { generateConceptSet } from "./generateConceptSet.js"
574

585
export function generateConcepts(context: Context): Array<Concept> {
596
return generateConceptSet(context).representatives
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import {
2+
conceptFromEntities,
3+
createConceptSet,
4+
type Concept,
5+
} from "../concept/index.js"
6+
import type { Context } from "../context/index.js"
7+
import type { QuotientSet } from "../utils/QuotientSet.js"
8+
9+
export function generateEntityConceptSet(
10+
context: Context,
11+
): QuotientSet<Concept> {
12+
const conceptSet = createConceptSet()
13+
14+
for (const entity of context.entities) {
15+
const entityConcept = conceptFromEntities(context, [entity])
16+
conceptSet.add(entityConcept)
17+
}
18+
19+
return conceptSet
20+
}

src/lattice/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
export * from "./conceptAbove.js"
22
export * from "./conceptBelow.js"
33
export * from "./generateConcepts.js"
4+
export * from "./generateConceptSet.js"

0 commit comments

Comments
 (0)