Koala UI is a modern, user-friendly web application designed to explore and visualize entity linking results efficiently. It features a clean interface, easy navigation, and powerful data handling capabilities.
Koala UI is built with React and Material-UI, offering a seamless experience for users to manage and visualize datasets related to entity linking results. The application includes functionalities such as login authentication, dataset listing, table viewing, and detailed data visualization.
- User Authentication
- Dataset Listing
- Table Data Viewing
- Pagination
- Data Visualization
- Responsive Design
- Easy Navigation
To get started with Koala UI using Docker, follow these steps:
-
Clone the repository
git clone https://github.com/enRichMyData/koala_ui
-
Navigate to the project directory
cd koala-ui -
Copy the .env template to .env
cp .env.template .env
-
Fill out the required environment variables in the .env file.
Example:
# Frontend environment variables REACT_APP_BACKEND_URL=http://localhost:5001 REACT_APP_CROCODILE_URL= REACT_APP_CROCODILE_SECRET= REACT_APP_LAMAPI_URL= REACT_APP_LAMAPI_TOKEN= # Common environment variables NODE_ENV=development FLASK_ENV=development JWT_SECRET_KEY= # Versions NODE_VERSION=22 PYTHON_VERSION=3.12 MONGO_VERSION=7.0 # Ports FRONTEND_PORT=3000 BACKEND_PORT=5001 MONGO_PORT=27017
Note: Fill in
REACT_APP_CROCODILE_URL,REACT_APP_CROCODILE_TOKEN,REACT_APP_LAMAPI_URL, andREACT_APP_LAMAPI_TOKENbased on where your instances of Crocodile and LamAPI are running. -
Build and start the containers
docker-compose up --build
-
Access the application Open your browser and go to
http://localhost:${FRONTEND_PORT}.
Ensure you have active instances of Alligator and LamAPI running. You can find more information and instructions on setting up these services in their respective repositories:
To run the application in production mode:
-
Build and start the containers:
docker-compose -f docker-compose.prod.yml up --build
-
Access the application:
- Frontend:
http://localhost:${FRONTEND_PORT} - Backend:
http://localhost:${BACKEND_PORT}
- Frontend:
Once the server is running, you can access the application at http://localhost:${FRONTEND_PORT}.
- Login: Use your credentials to log in.
- Dataset Management: View and manage your datasets.
- Table Viewing: Explore detailed data within tables.
- Data Visualization: Visualize data trends and insights.
Koala UI can work with any entity linking system that adopts the following data format. This specification allows other entity linking tools to integrate seamlessly with Koala UI for visualization and annotation.
{
"data": [
{
"dataset_name": "string",
"total_tables": "number",
"total_rows": "number",
"created_at": "ISO timestamp"
}
],
"pagination": {
"next_cursor": "string|null",
"prev_cursor": "string|null"
}
}{
"header": ["column1", "column2", "column3"],
"rows": [
{
"idRow": "unique_row_identifier",
"data": ["cell_value_1", "cell_value_2", "cell_value_3"],
"linked_entities": [
{
"idColumn": 0,
"candidates": [
{
"id": "Q123456",
"name": "Entity Name",
"description": "Entity description",
"score": 0.95,
"types": [
{
"id": "Q5",
"name": "human"
}
],
"match": true
}
]
}
]
}
],
"classified_columns": {
"NE": {
"0": "PERSON",
"2": "LOCATION"
},
"LIT": {
"1": "DATE"
}
},
"column_types": {
"0": {
"types": [
{
"id": "Q5",
"name": "human",
"count": 15
}
]
}
},
"status": "TODO|DOING|DONE"
}dataset_name: Unique identifier for the datasettotal_tables: Number of tables in the datasettotal_rows: Total number of rows across all tables
header: Array of column namesrows: Array of data rows with entity linking informationstatus: Processing status ("DONE", "DOING", or "processing")
idRow: Unique identifier for the rowdata: Array of cell values corresponding to header columnslinked_entities: Array of entity linking results for this row
idColumn: Column index (0-based) where entity was foundcandidates: Array of potential entity matchesid: Entity identifier (e.g., Wikidata QID)name: Human-readable entity namedescription: Brief description of the entityscore: Confidence score (0.0 to 1.0)types: Array of entity types with id and namematch: Boolean indicating if this is the selected/best match
classified_columns.NE: Named Entity columns with their subtypesclassified_columns.LIT: Literal columns with their subtypescolumn_types: Type distribution information per column
PERSON: Person namesLOCATION: Geographic locationsORGANIZATION: Organizations and institutionsOTHER: Other named entities
DATE: Date valuesNUMBER: Numeric valuesSTRING: Text literalsOTHER: Other literal types
Your entity linking system should provide these endpoints:
GET /datasets - List datasets
GET /datasets/{name}/tables - List tables in dataset
GET /datasets/{name}/tables/{table} - Get table data
POST /datasets/{name}/tables - Upload new table
DELETE /datasets/{name}/tables/{table} - Delete table
GET /datasets/{name}/tables/{table}/status - Get processing status
GET /datasets/{name}/tables/{table}/export - Export enriched data
To integrate your entity linking system with Koala UI:
- Implement the required API endpoints
- Format your data according to this specification
- Configure Koala UI to point to your backend URL
- Optionally integrate with external knowledge bases (Wikidata, etc.)
For reference implementation, see the Crocodile entity linking system.
Contributions are welcome! Please fork the repository and create a pull request with your changes. Make sure to follow the contribution guidelines.
This project is licensed under the MIT License - see the LICENSE file for details.
For any questions or suggestions, please contact us at roberto.avogadro@sintef.no.

