PHPackages                             lorem-ipsum-systems/occupation-classification-codes - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. lorem-ipsum-systems/occupation-classification-codes

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

lorem-ipsum-systems/occupation-classification-codes
===================================================

Occupational and employee classification codes (SOC, UK SOC, ISCO)

v1.0.3(2w ago)063MITPHPPHP &gt;=8.2CI passing

Since May 21Pushed 2w agoCompare

[ Source](https://github.com/Lorem-Ipsum-Systems/Occupation-Classification-Codes)[ Packagist](https://packagist.org/packages/lorem-ipsum-systems/occupation-classification-codes)[ RSS](/packages/lorem-ipsum-systems-occupation-classification-codes/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (4)Dependencies (1)Versions (5)Used By (0)

Occupation Classification Codes
===============================

[](#occupation-classification-codes)

A framework-agnostic PHP library for occupational and employee classification codes. This package provides a unified API for lookup, validation, hierarchy browsing, descriptions, and autocomplete across multiple classification systems.

Supported Systems
-----------------

[](#supported-systems)

SystemVersionJurisdictionData PathSOC2018United States`data/soc/2018/`UK\_SOC2020United Kingdom`data/uk_soc/2020/`ISCO08International (ILO/UN)`data/isco/08/`ESCO1.2.1European Union`data/esco/1.2.1/`Installation
------------

[](#installation)

```
composer require lorem-ipsum-systems/occupation-classification-codes
```

Quickstart
----------

[](#quickstart)

```
use ClassificationOccupation\ClassificationOccupationRegistry;

// Initialize the Registry with bundled data
$registry = ClassificationOccupationRegistry::fromDefaultData();

// 1. Validate a code
if ($registry->isValidCode('SOC', '2018', '15-1252')) {
    echo "Valid SOC code!\n";
}

// 2. Find a specific occupation
$code = $registry->findCode('UK_SOC', '2020', '2134');
if ($code) {
    echo "Title: " . $code->title . "\n"; // Programmers and software development professionals
}

// 3. Hierarchy traversal
$children = $registry->childrenOf('ISCO', '08', '2512');
foreach ($children as $child) {
    echo $child->code . ": " . $child->title . "\n";
}

// 4. Search and Autocomplete
$results = $registry->search('software developer');
foreach ($results as $result) {
    echo $result->code->title . " (Score: " . $result->score . ")\n";
}

$suggestions = $registry->autocomplete('soft');
```

Data Directory Layout
---------------------

[](#data-directory-layout)

The package uses a version-aware data layout to support multiple systems and future versions without breaking the API:

```
data/
  soc/
    2018/
      soc_structure_2018.ndjson
      soc_2018_definitions.ndjson
      soc_2018_direct_match_title_file.ndjson
  uk_soc/
    2020/
      soc2020_framework.ndjson
      soc2020_volume2_thecodingindex.ndjson
  isco/
    08/
      isco_08_en.ndjson
      isco_08_en_structure_and_definitions.ndjson
      isco_08_88_en_index.ndjson
  esco/
    1.2.1/
      occupations_en.ndjson
      broaderRelationsOccPillar_en.ndjson

```

v1 Limitations
--------------

[](#v1-limitations)

- No crosswalks or framework-to-framework mappings.
- No version migration tools.
- No support for NOC or ANZSCO yet.
- Historical fields in source files (e.g., ISCO-88, SOC 2010) are preserved as internal metadata only.

Future Roadmap
--------------

[](#future-roadmap)

Planned additive features:

- Support for NOC (Canada) and ANZSCO (Australia/New Zealand).
- Multi-language translations.
- Relationship and crosswalk files.
- Optional exporters and framework adapters.

API Reference
-------------

[](#api-reference)

### `ClassificationOccupationRegistry`

[](#classificationoccupationregistry)

- `fromDefaultData()`: Factory to create a registry with bundled data.
- `systems()`: Returns array of supported system identifiers.
- `versions(?string $system)`: Returns array of supported versions for a system.
- `codes(string $system, string $version)`: Returns all normalized codes for a dataset.
- `findCode(string $system, string $version, string $code)`: Returns a `ClassificationOccupationCode` or null.
- `getCode(...)`: Same as `findCode` but throws exception if not found.
- `isValidCode(...)`: Returns boolean.
- `childrenOf(...)`, `parentOf(...)`, `ancestorsOf(...)`, `descendantsOf(...)`: Hierarchy traversal.
- `search(string $query, ...)`: Returns `ClassificationOccupationSearchResult[]`.
- `autocomplete(string $query, ...)`: Returns suggestions optimized for short input.

### Value Objects

[](#value-objects)

- `ClassificationOccupation\Model\ClassificationOccupationCode`: Immutable object containing code, title, level, parent, description, and metadata.
- `ClassificationOccupation\Model\ClassificationOccupationSearchResult`: Contains matched code, term, score, and match type.

Licensing and Attribution
-------------------------

[](#licensing-and-attribution)

This package is licensed under the MIT License. Users should review upstream source data licensing and attribution requirements for SOC, UK SOC, and ISCO. Source metadata is preserved in `source_file` and `source_sheet` fields.

###  Health Score

43

—

FairBetter than 89% of packages

Maintenance96

Actively maintained with recent releases

Popularity12

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity49

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

4

Last Release

19d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/ae62caeaa6ff9595107f13b2d6ea2a514b3306463c70618de6168ed98b1770d1?d=identicon)[loremipsumsystems](/maintainers/loremipsumsystems)

---

Top Contributors

[![samuelbengtsson](https://avatars.githubusercontent.com/u/62132302?v=4)](https://github.com/samuelbengtsson "samuelbengtsson (8 commits)")

---

Tags

classificationsococcupationuk-sociscostandard-occupational-classification

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/lorem-ipsum-systems-occupation-classification-codes/health.svg)

```
[![Health](https://phpackages.com/badges/lorem-ipsum-systems-occupation-classification-codes/health.svg)](https://phpackages.com/packages/lorem-ipsum-systems-occupation-classification-codes)
```

###  Alternatives

[rubix/ml

A high-level machine learning and deep learning library for the PHP language.

2.2k1.5M28](/packages/rubix-ml)[sylius/taxonomy

Taxonomies - categorization of domain models in PHP projects.

14451.5k15](/packages/sylius-taxonomy)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
