Сопоставление и группировка наборов правил с использованием библиотек на основе графов с открытым исходным кодом в Java - PullRequest
0 голосов
/ 28 октября 2019

Я работаю над проблемой, когда у меня есть два входа

Вход 1: Правила в иерархическом формате (дерево) (этот набор может быть огромным)

Пример:

X
|-A-{}
|-B-C-*
|-D-E-F-{}
|-G-[]
|-H-I-J-K-<>
|-L-M-N-O-P-Q-{}

Где X, A, B, D, E, F, G ... являются ключевыми словами и {}, *, [], <> являются заполнителями.

Ввод 2: Набор строк

Пример:

X-A-1
D-E-F-1
X-A-2
D-E-F-2
L-M-N-O-P-Q-3
L-M-N-O-P-Q-1

Мне нужнодля сопоставления с образцом каждой из этих строк на основе набора правил, указанного во входе 1, и проверки соответствия. Если это совпадает, мне нужно сгруппировать эти строки на основе значений заполнителя. Например, {} является общим заполнителем для 3 правил на входе 1 (A- {}, DEF- {}, LMNOPQ- {}).

Выход: Группы выходных результатов должны быть такими:

Значение заполнителя 1:

XA-1 DEF-1LMNOPQ-1

Значение заполнителя 2:

XA-2 DEF-2

Значение заполнителя 3:

LMNOPQ-3

Я имею в виду представление Входа 1 в виде дерева и прохождение каждой строки во Входе 2, а затем для каждого из этих значений заполнителей сформировать группу и добавить строки вэти группы. Мне нужно реализовать это на Java. Я думал о том, чтобы сделать простое сопоставление с Regex, но входной набор мог бы быть огромным. Я хочу знать ваши предложения / комментарии относительно моего подхода. Кроме того, какую библиотеку Java с открытым исходным кодом я могу использовать для представления Входных данных 1. Служит ли Graph Stream для этой цели?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...