diff --git a/cyclonedx_py/_internal/environment.py b/cyclonedx_py/_internal/environment.py
index 7027131a..398d22a5 100644
--- a/cyclonedx_py/_internal/environment.py
+++ b/cyclonedx_py/_internal/environment.py
@@ -44,12 +44,12 @@ def make_argument_parser(**kwargs: Any) -> 'ArgumentParser':
 
     def __init__(self, *,
                  logger: 'Logger',
-                 **kwargs: Any) -> None:
+                 **__: Any) -> None:
         self._logger = logger
 
     def __call__(self, *,  # type:ignore[override]
                  lock: BinaryIO,
-                 **kwargs: Any) -> 'Bom':
+                 **__: Any) -> 'Bom':
         from .utils.bom import make_bom
 
         bom = make_bom()
diff --git a/cyclonedx_py/_internal/pipenv.py b/cyclonedx_py/_internal/pipenv.py
index f81cb9c8..49876309 100644
--- a/cyclonedx_py/_internal/pipenv.py
+++ b/cyclonedx_py/_internal/pipenv.py
@@ -49,12 +49,12 @@ def make_argument_parser(**kwargs: Any) -> 'ArgumentParser':
 
     def __init__(self, *,
                  logger: 'Logger',
-                 **kwargs: Any) -> None:
+                 **__: Any) -> None:
         self._logger = logger
 
     def __call__(self, *,  # type:ignore[override]
                  lock: BinaryIO,
-                 **kwargs: Any) -> 'Bom':
+                 **__: Any) -> 'Bom':
         from .utils.bom import make_bom
 
         bom = make_bom()
diff --git a/cyclonedx_py/_internal/poetry.py b/cyclonedx_py/_internal/poetry.py
index 3b7960cf..6390c99c 100644
--- a/cyclonedx_py/_internal/poetry.py
+++ b/cyclonedx_py/_internal/poetry.py
@@ -137,7 +137,7 @@ def make_argument_parser(**kwargs: Any) -> 'ArgumentParser':
 
     def __init__(self, *,
                  logger: 'Logger',
-                 **kwargs: Any) -> None:
+                 **__: Any) -> None:
         self._logger = logger
 
     def __call__(self, *,  # type:ignore[override]
@@ -146,7 +146,7 @@ def __call__(self, *,  # type:ignore[override]
                  no_dev: bool,
                  extras: List[str], all_extras: bool,
                  mc_type: 'ComponentType',
-                 **kwargs: Any) -> 'Bom':
+                 **__: Any) -> 'Bom':
         from os.path import join
 
         from .utils.toml import toml_loads
@@ -156,12 +156,12 @@ def __call__(self, *,  # type:ignore[override]
         try:
             pyproject = open(pyproject_file, 'rt', encoding='utf8', errors='replace')
         except OSError as err:
-            raise ValueError(f"can't open {pyproject_file!r}: {err}")
+            raise ValueError(f'Could not open pyproject file: {pyproject_file}') from err
         try:
             lock = open(lock_file, 'rt', encoding='utf8', errors='replace')
         except OSError as err:
             pyproject.close()
-            raise ValueError(f"can't open {lock_file!r}: {err}")
+            raise ValueError(f'Could not open lock file: {lock_file}') from err
 
         with pyproject, lock:
             project = toml_loads(pyproject.read())
diff --git a/cyclonedx_py/_internal/requirements.py b/cyclonedx_py/_internal/requirements.py
index 48b0930d..1c3a18a8 100644
--- a/cyclonedx_py/_internal/requirements.py
+++ b/cyclonedx_py/_internal/requirements.py
@@ -16,7 +16,7 @@
 # Copyright (c) OWASP Foundation. All Rights Reserved.
 
 
-from typing import TYPE_CHECKING, Any, Generator, List, Set
+from typing import TYPE_CHECKING, Any, Generator, List, Optional, Set
 
 from . import BomBuilder
 
@@ -26,7 +26,7 @@
 
     from cyclonedx.model import HashType
     from cyclonedx.model.bom import Bom
-    from cyclonedx.model.component import Component
+    from cyclonedx.model.component import Component, ComponentType
     from pip_requirements_parser import InstallRequirement, RequirementsFile  # type:ignore[import-untyped]
 
 
@@ -41,6 +41,10 @@ def make_argument_parser(**kwargs: Any) -> 'ArgumentParser':
         from argparse import OPTIONAL, ArgumentParser
         from textwrap import dedent
 
+        from cyclonedx.model.component import ComponentType
+
+        from .utils.args import argparse_type4enum
+
         p = ArgumentParser(description=dedent(""""\
                            Build an SBOM from Pip requirements.
 
@@ -75,6 +79,23 @@ def make_argument_parser(**kwargs: Any) -> 'ArgumentParser':
                        action='append',
                        dest='extra_index_urls',
                        default=[])
+        p.add_argument('--pyproject',
+                       metavar='pyproject.toml',
+                       help="Path to the root component's `pyproject.toml` according to PEP621",
+                       dest='pyproject_file',
+                       default=None)
+        _mc_types = [ComponentType.APPLICATION,
+                     ComponentType.FIRMWARE,
+                     ComponentType.LIBRARY]
+        p.add_argument('--mc-type',
+                       metavar='TYPE',
+                       help='Type of the main component'
+                            f' {{choices: {", ".join(t.value for t in _mc_types)}}}'
+                            ' (default: %(default)s)',
+                       dest='mc_type',
+                       choices=_mc_types,
+                       type=argparse_type4enum(ComponentType),
+                       default=ComponentType.APPLICATION.value)
         p.add_argument('requirements_file',
                        metavar='requirements-file',
                        help='I HELP TODO (default: %(default)r in current working directory)',
@@ -86,18 +107,38 @@ def __init__(self, *,
                  logger: 'Logger',
                  index_url: str,
                  extra_index_urls: List[str],
-                 **kwargs: Any) -> None:
+                 **__: Any) -> None:
         self._logger = logger
         self._index_url = index_url
         self._extra_index_urls = set(extra_index_urls)
 
     def __call__(self, *,  # type:ignore[override]
                  requirements_file: str,
-                 **kwargs: Any) -> 'Bom':
+                 pyproject_file: Optional[str],
+                 mc_type: 'ComponentType',
+                 **__: Any) -> 'Bom':
         from os import unlink
 
         from pip_requirements_parser import RequirementsFile
 
+        if pyproject_file is None:
+            rc = None
+        else:
+            from .utils.pep621 import pyproject2component
+            from .utils.toml import toml_loads
+
+            try:
+                pyproject_fh = open(pyproject_file, 'rt', encoding='utf8', errors='replace')
+            except OSError as err:
+                raise ValueError(f'Could not open pyproject file: {pyproject_file}') from err
+            with pyproject_fh:
+                rc = pyproject2component(
+                    toml_loads(pyproject_fh.read()),
+                    type=mc_type
+                )
+                rc.bom_ref.value = 'root-component'
+            del pyproject_fh
+
         if requirements_file == '-':
             from sys import stdin
 
@@ -108,17 +149,22 @@ def __call__(self, *,  # type:ignore[override]
                 rf = RequirementsFile.from_file(rt, include_nested=False)
             finally:
                 unlink(rt)
+            del rt
         else:
             rf = RequirementsFile.from_file(requirements_file, include_nested=True)
 
-        return self._make_bom(rf)
-
-    def _make_bom(self, rf: 'RequirementsFile') -> 'Bom':
-        from functools import reduce
+        return self._make_bom(rc, rf)
 
+    def _make_bom(self, rc: Optional['Component'], rf: 'RequirementsFile') -> 'Bom':
         from .utils.bom import make_bom
 
         bom = make_bom()
+        self._add_components(bom, rf)
+        bom.metadata.component = rc
+        return bom
+
+    def _add_components(self, bom: 'Bom', rf: 'RequirementsFile') -> None:
+        from functools import reduce
 
         index_url = reduce(lambda c, i: i.options.get('index_url') or c, rf.options, self._index_url)
         extra_index_urls = self._extra_index_urls.union(*(
@@ -133,8 +179,6 @@ def _make_bom(self, rf: 'RequirementsFile') -> 'Bom':
                 self._logger.warning('Component has no pinned version: %r', component)
             bom.components.add(component)
 
-        return bom
-
     def __hashes4req(self, req: 'InstallRequirement') -> Generator['HashType', None, None]:
         from cyclonedx.exception.model import UnknownHashTypeException
         from cyclonedx.model import HashType
diff --git a/cyclonedx_py/_internal/utils/bom.py b/cyclonedx_py/_internal/utils/bom.py
index 623f6d72..a6e24374 100644
--- a/cyclonedx_py/_internal/utils/bom.py
+++ b/cyclonedx_py/_internal/utils/bom.py
@@ -16,15 +16,17 @@
 # Copyright (c) OWASP Foundation. All Rights Reserved.
 
 
+from typing import Any
+
 from cyclonedx.model import ExternalReference, ExternalReferenceType, Tool, XsUri
 from cyclonedx.model.bom import Bom
 
 from cyclonedx_py import __version__
 
 
-def make_bom() -> Bom:
-    bom = Bom()
-    tool = Tool(
+def make_bom(**kwargs: Any) -> Bom:
+    bom = Bom(**kwargs)
+    bom.metadata.tools.add(Tool(
         vendor='CycloneDX',
         name='cyclonedx-bom',
         version=__version__ or 'UNKNOWN',
@@ -61,6 +63,5 @@ def make_bom() -> Bom:
                 type=ExternalReferenceType.WEBSITE,
                 url=XsUri('https://github.com/CycloneDX/cyclonedx-python/#readme')
             )
-        ])
-    bom.metadata.tools.add(tool)
+        ]))
     return bom
diff --git a/cyclonedx_py/_internal/utils/pep621.py b/cyclonedx_py/_internal/utils/pep621.py
new file mode 100644
index 00000000..7d828f03
--- /dev/null
+++ b/cyclonedx_py/_internal/utils/pep621.py
@@ -0,0 +1,39 @@
+# This file is part of CycloneDX Python Lib
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# SPDX-License-Identifier: Apache-2.0
+# Copyright (c) OWASP Foundation. All Rights Reserved.
+
+
+"""functionality related tot PEP 621
+See https://peps.python.org/pep-0621/
+See https://packaging.python.org/en/latest/specifications/declaring-project-metadata/#declaring-project-metadata
+"""
+
+from typing import Any, Dict
+
+from cyclonedx.model.component import Component, ComponentType
+
+
+def pyproject2component(pyproject: Dict[str, Any], *,
+                        type: ComponentType) -> Component:
+    project = pyproject['project']
+    return Component(
+        type=type,
+        bom_ref=project['name'],
+        name=project['name'],
+        version=project.get('version', None),
+        description=project.get('description', None),
+        # TODO add more properties according to spec
+    )
diff --git a/tests/_data/infiles/requirements/pyproject.toml b/tests/_data/infiles/requirements/pyproject.toml
index 5e8a4eb4..7a5a66e2 100644
--- a/tests/_data/infiles/requirements/pyproject.toml
+++ b/tests/_data/infiles/requirements/pyproject.toml
@@ -1,8 +1,8 @@
 [project]
 # https://packaging.python.org/en/latest/specifications/declaring-project-metadata/#declaring-project-metadata
-name = "testing-requirements"
+name = "testing-requirements-txt"
 version = "0.1.0"
-description = "a packag with all meta"
+description = "some `reuqirements.txt` a root-component with all metadata"
 license = "Apache-2.0"
 readme = "README.md"
 requires-python = ">=3.7"
diff --git a/tests/_data/snapshots/requirements/frozen.txt-1.2.json-file.bin b/tests/_data/snapshots/requirements/frozen.txt-1.2.json-file.bin
index 54b59ce1..dac5f298 100644
--- a/tests/_data/snapshots/requirements/frozen.txt-1.2.json-file.bin
+++ b/tests/_data/snapshots/requirements/frozen.txt-1.2.json-file.bin
@@ -37,9 +37,19 @@
     },
     {
       "ref": "requirements-L7"
+    },
+    {
+      "ref": "root-component"
     }
   ],
   "metadata": {
+    "component": {
+      "bom-ref": "root-component",
+      "description": "some `reuqirements.txt` a root-component with all metadata",
+      "name": "testing-requirements-txt",
+      "type": "application",
+      "version": "0.1.0"
+    },
     "tools": [
       {
         "name": "cyclonedx-bom",
diff --git a/tests/_data/snapshots/requirements/frozen.txt-1.2.xml-file.bin b/tests/_data/snapshots/requirements/frozen.txt-1.2.xml-file.bin
index 0bb8014a..d6560072 100644
--- a/tests/_data/snapshots/requirements/frozen.txt-1.2.xml-file.bin
+++ b/tests/_data/snapshots/requirements/frozen.txt-1.2.xml-file.bin
@@ -13,6 +13,11 @@
         <version>libVersion-testing</version>
       </tool>
     </tools>
+    <component type="application" bom-ref="root-component">
+      <name>testing-requirements-txt</name>
+      <version>0.1.0</version>
+      <description>some `reuqirements.txt` a root-component with all metadata</description>
+    </component>
   </metadata>
   <components>
     <component type="library" bom-ref="requirements-L7">
@@ -43,5 +48,6 @@
   <dependencies>
     <dependency ref="requirements-L4"/>
     <dependency ref="requirements-L7"/>
+    <dependency ref="root-component"/>
   </dependencies>
 </bom>
diff --git a/tests/_data/snapshots/requirements/frozen.txt-1.3.json-file.bin b/tests/_data/snapshots/requirements/frozen.txt-1.3.json-file.bin
index 721c5238..93e9baca 100644
--- a/tests/_data/snapshots/requirements/frozen.txt-1.3.json-file.bin
+++ b/tests/_data/snapshots/requirements/frozen.txt-1.3.json-file.bin
@@ -47,9 +47,19 @@
     },
     {
       "ref": "requirements-L7"
+    },
+    {
+      "ref": "root-component"
     }
   ],
   "metadata": {
+    "component": {
+      "bom-ref": "root-component",
+      "description": "some `reuqirements.txt` a root-component with all metadata",
+      "name": "testing-requirements-txt",
+      "type": "application",
+      "version": "0.1.0"
+    },
     "tools": [
       {
         "name": "cyclonedx-bom",
diff --git a/tests/_data/snapshots/requirements/frozen.txt-1.3.xml-file.bin b/tests/_data/snapshots/requirements/frozen.txt-1.3.xml-file.bin
index c5c0f0dd..718c3961 100644
--- a/tests/_data/snapshots/requirements/frozen.txt-1.3.xml-file.bin
+++ b/tests/_data/snapshots/requirements/frozen.txt-1.3.xml-file.bin
@@ -13,6 +13,11 @@
         <version>libVersion-testing</version>
       </tool>
     </tools>
+    <component type="application" bom-ref="root-component">
+      <name>testing-requirements-txt</name>
+      <version>0.1.0</version>
+      <description>some `reuqirements.txt` a root-component with all metadata</description>
+    </component>
   </metadata>
   <components>
     <component type="library" bom-ref="requirements-L7">
@@ -47,5 +52,6 @@
   <dependencies>
     <dependency ref="requirements-L4"/>
     <dependency ref="requirements-L7"/>
+    <dependency ref="root-component"/>
   </dependencies>
 </bom>
diff --git a/tests/_data/snapshots/requirements/frozen.txt-1.4.json-file.bin b/tests/_data/snapshots/requirements/frozen.txt-1.4.json-file.bin
index 017055f9..59f8b71b 100644
--- a/tests/_data/snapshots/requirements/frozen.txt-1.4.json-file.bin
+++ b/tests/_data/snapshots/requirements/frozen.txt-1.4.json-file.bin
@@ -47,9 +47,19 @@
     },
     {
       "ref": "requirements-L7"
+    },
+    {
+      "ref": "root-component"
     }
   ],
   "metadata": {
+    "component": {
+      "bom-ref": "root-component",
+      "description": "some `reuqirements.txt` a root-component with all metadata",
+      "name": "testing-requirements-txt",
+      "type": "application",
+      "version": "0.1.0"
+    },
     "tools": [
       {
         "externalReferences": [   ],
diff --git a/tests/_data/snapshots/requirements/frozen.txt-1.4.xml-file.bin b/tests/_data/snapshots/requirements/frozen.txt-1.4.xml-file.bin
index d0e82183..c9416bb4 100644
--- a/tests/_data/snapshots/requirements/frozen.txt-1.4.xml-file.bin
+++ b/tests/_data/snapshots/requirements/frozen.txt-1.4.xml-file.bin
@@ -40,6 +40,11 @@
         <externalReferences><!-- stripped --></externalReferences>
       </tool>
     </tools>
+    <component type="application" bom-ref="root-component">
+      <name>testing-requirements-txt</name>
+      <version>0.1.0</version>
+      <description>some `reuqirements.txt` a root-component with all metadata</description>
+    </component>
   </metadata>
   <components>
     <component type="library" bom-ref="requirements-L7">
@@ -74,5 +79,6 @@
   <dependencies>
     <dependency ref="requirements-L4"/>
     <dependency ref="requirements-L7"/>
+    <dependency ref="root-component"/>
   </dependencies>
 </bom>
diff --git a/tests/_data/snapshots/requirements/local.txt-1.2.json-file.bin b/tests/_data/snapshots/requirements/local.txt-1.2.json-file.bin
index 93744060..29aefa1e 100644
--- a/tests/_data/snapshots/requirements/local.txt-1.2.json-file.bin
+++ b/tests/_data/snapshots/requirements/local.txt-1.2.json-file.bin
@@ -103,9 +103,19 @@
     },
     {
       "ref": "requirements-L8"
+    },
+    {
+      "ref": "root-component"
     }
   ],
   "metadata": {
+    "component": {
+      "bom-ref": "root-component",
+      "description": "some `reuqirements.txt` a root-component with all metadata",
+      "name": "testing-requirements-txt",
+      "type": "application",
+      "version": "0.1.0"
+    },
     "tools": [
       {
         "name": "cyclonedx-bom",
diff --git a/tests/_data/snapshots/requirements/local.txt-1.2.xml-file.bin b/tests/_data/snapshots/requirements/local.txt-1.2.xml-file.bin
index 30ea9c4d..63d4263b 100644
--- a/tests/_data/snapshots/requirements/local.txt-1.2.xml-file.bin
+++ b/tests/_data/snapshots/requirements/local.txt-1.2.xml-file.bin
@@ -13,6 +13,11 @@
         <version>libVersion-testing</version>
       </tool>
     </tools>
+    <component type="application" bom-ref="root-component">
+      <name>testing-requirements-txt</name>
+      <version>0.1.0</version>
+      <description>some `reuqirements.txt` a root-component with all metadata</description>
+    </component>
   </metadata>
   <components>
     <component type="library" bom-ref="requirements-L11">
@@ -89,5 +94,6 @@
     <dependency ref="requirements-L2"/>
     <dependency ref="requirements-L5"/>
     <dependency ref="requirements-L8"/>
+    <dependency ref="root-component"/>
   </dependencies>
 </bom>
diff --git a/tests/_data/snapshots/requirements/local.txt-1.3.json-file.bin b/tests/_data/snapshots/requirements/local.txt-1.3.json-file.bin
index 1eb4b4c8..246dec51 100644
--- a/tests/_data/snapshots/requirements/local.txt-1.3.json-file.bin
+++ b/tests/_data/snapshots/requirements/local.txt-1.3.json-file.bin
@@ -109,9 +109,19 @@
     },
     {
       "ref": "requirements-L8"
+    },
+    {
+      "ref": "root-component"
     }
   ],
   "metadata": {
+    "component": {
+      "bom-ref": "root-component",
+      "description": "some `reuqirements.txt` a root-component with all metadata",
+      "name": "testing-requirements-txt",
+      "type": "application",
+      "version": "0.1.0"
+    },
     "tools": [
       {
         "name": "cyclonedx-bom",
diff --git a/tests/_data/snapshots/requirements/local.txt-1.3.xml-file.bin b/tests/_data/snapshots/requirements/local.txt-1.3.xml-file.bin
index fb576405..68e99bf1 100644
--- a/tests/_data/snapshots/requirements/local.txt-1.3.xml-file.bin
+++ b/tests/_data/snapshots/requirements/local.txt-1.3.xml-file.bin
@@ -13,6 +13,11 @@
         <version>libVersion-testing</version>
       </tool>
     </tools>
+    <component type="application" bom-ref="root-component">
+      <name>testing-requirements-txt</name>
+      <version>0.1.0</version>
+      <description>some `reuqirements.txt` a root-component with all metadata</description>
+    </component>
   </metadata>
   <components>
     <component type="library" bom-ref="requirements-L11">
@@ -92,5 +97,6 @@
     <dependency ref="requirements-L2"/>
     <dependency ref="requirements-L5"/>
     <dependency ref="requirements-L8"/>
+    <dependency ref="root-component"/>
   </dependencies>
 </bom>
diff --git a/tests/_data/snapshots/requirements/local.txt-1.4.json-file.bin b/tests/_data/snapshots/requirements/local.txt-1.4.json-file.bin
index 9e461821..cfbf1936 100644
--- a/tests/_data/snapshots/requirements/local.txt-1.4.json-file.bin
+++ b/tests/_data/snapshots/requirements/local.txt-1.4.json-file.bin
@@ -104,9 +104,19 @@
     },
     {
       "ref": "requirements-L8"
+    },
+    {
+      "ref": "root-component"
     }
   ],
   "metadata": {
+    "component": {
+      "bom-ref": "root-component",
+      "description": "some `reuqirements.txt` a root-component with all metadata",
+      "name": "testing-requirements-txt",
+      "type": "application",
+      "version": "0.1.0"
+    },
     "tools": [
       {
         "externalReferences": [   ],
diff --git a/tests/_data/snapshots/requirements/local.txt-1.4.xml-file.bin b/tests/_data/snapshots/requirements/local.txt-1.4.xml-file.bin
index 02871a38..a8f2f7fe 100644
--- a/tests/_data/snapshots/requirements/local.txt-1.4.xml-file.bin
+++ b/tests/_data/snapshots/requirements/local.txt-1.4.xml-file.bin
@@ -40,6 +40,11 @@
         <externalReferences><!-- stripped --></externalReferences>
       </tool>
     </tools>
+    <component type="application" bom-ref="root-component">
+      <name>testing-requirements-txt</name>
+      <version>0.1.0</version>
+      <description>some `reuqirements.txt` a root-component with all metadata</description>
+    </component>
   </metadata>
   <components>
     <component type="library" bom-ref="requirements-L11">
@@ -114,5 +119,6 @@
     <dependency ref="requirements-L2"/>
     <dependency ref="requirements-L5"/>
     <dependency ref="requirements-L8"/>
+    <dependency ref="root-component"/>
   </dependencies>
 </bom>
diff --git a/tests/_data/snapshots/requirements/nested.txt-1.2.json-file.bin b/tests/_data/snapshots/requirements/nested.txt-1.2.json-file.bin
index 54b59ce1..dac5f298 100644
--- a/tests/_data/snapshots/requirements/nested.txt-1.2.json-file.bin
+++ b/tests/_data/snapshots/requirements/nested.txt-1.2.json-file.bin
@@ -37,9 +37,19 @@
     },
     {
       "ref": "requirements-L7"
+    },
+    {
+      "ref": "root-component"
     }
   ],
   "metadata": {
+    "component": {
+      "bom-ref": "root-component",
+      "description": "some `reuqirements.txt` a root-component with all metadata",
+      "name": "testing-requirements-txt",
+      "type": "application",
+      "version": "0.1.0"
+    },
     "tools": [
       {
         "name": "cyclonedx-bom",
diff --git a/tests/_data/snapshots/requirements/nested.txt-1.2.xml-file.bin b/tests/_data/snapshots/requirements/nested.txt-1.2.xml-file.bin
index 0bb8014a..d6560072 100644
--- a/tests/_data/snapshots/requirements/nested.txt-1.2.xml-file.bin
+++ b/tests/_data/snapshots/requirements/nested.txt-1.2.xml-file.bin
@@ -13,6 +13,11 @@
         <version>libVersion-testing</version>
       </tool>
     </tools>
+    <component type="application" bom-ref="root-component">
+      <name>testing-requirements-txt</name>
+      <version>0.1.0</version>
+      <description>some `reuqirements.txt` a root-component with all metadata</description>
+    </component>
   </metadata>
   <components>
     <component type="library" bom-ref="requirements-L7">
@@ -43,5 +48,6 @@
   <dependencies>
     <dependency ref="requirements-L4"/>
     <dependency ref="requirements-L7"/>
+    <dependency ref="root-component"/>
   </dependencies>
 </bom>
diff --git a/tests/_data/snapshots/requirements/nested.txt-1.3.json-file.bin b/tests/_data/snapshots/requirements/nested.txt-1.3.json-file.bin
index 721c5238..93e9baca 100644
--- a/tests/_data/snapshots/requirements/nested.txt-1.3.json-file.bin
+++ b/tests/_data/snapshots/requirements/nested.txt-1.3.json-file.bin
@@ -47,9 +47,19 @@
     },
     {
       "ref": "requirements-L7"
+    },
+    {
+      "ref": "root-component"
     }
   ],
   "metadata": {
+    "component": {
+      "bom-ref": "root-component",
+      "description": "some `reuqirements.txt` a root-component with all metadata",
+      "name": "testing-requirements-txt",
+      "type": "application",
+      "version": "0.1.0"
+    },
     "tools": [
       {
         "name": "cyclonedx-bom",
diff --git a/tests/_data/snapshots/requirements/nested.txt-1.3.xml-file.bin b/tests/_data/snapshots/requirements/nested.txt-1.3.xml-file.bin
index c5c0f0dd..718c3961 100644
--- a/tests/_data/snapshots/requirements/nested.txt-1.3.xml-file.bin
+++ b/tests/_data/snapshots/requirements/nested.txt-1.3.xml-file.bin
@@ -13,6 +13,11 @@
         <version>libVersion-testing</version>
       </tool>
     </tools>
+    <component type="application" bom-ref="root-component">
+      <name>testing-requirements-txt</name>
+      <version>0.1.0</version>
+      <description>some `reuqirements.txt` a root-component with all metadata</description>
+    </component>
   </metadata>
   <components>
     <component type="library" bom-ref="requirements-L7">
@@ -47,5 +52,6 @@
   <dependencies>
     <dependency ref="requirements-L4"/>
     <dependency ref="requirements-L7"/>
+    <dependency ref="root-component"/>
   </dependencies>
 </bom>
diff --git a/tests/_data/snapshots/requirements/nested.txt-1.4.json-file.bin b/tests/_data/snapshots/requirements/nested.txt-1.4.json-file.bin
index 017055f9..59f8b71b 100644
--- a/tests/_data/snapshots/requirements/nested.txt-1.4.json-file.bin
+++ b/tests/_data/snapshots/requirements/nested.txt-1.4.json-file.bin
@@ -47,9 +47,19 @@
     },
     {
       "ref": "requirements-L7"
+    },
+    {
+      "ref": "root-component"
     }
   ],
   "metadata": {
+    "component": {
+      "bom-ref": "root-component",
+      "description": "some `reuqirements.txt` a root-component with all metadata",
+      "name": "testing-requirements-txt",
+      "type": "application",
+      "version": "0.1.0"
+    },
     "tools": [
       {
         "externalReferences": [   ],
diff --git a/tests/_data/snapshots/requirements/nested.txt-1.4.xml-file.bin b/tests/_data/snapshots/requirements/nested.txt-1.4.xml-file.bin
index d0e82183..c9416bb4 100644
--- a/tests/_data/snapshots/requirements/nested.txt-1.4.xml-file.bin
+++ b/tests/_data/snapshots/requirements/nested.txt-1.4.xml-file.bin
@@ -40,6 +40,11 @@
         <externalReferences><!-- stripped --></externalReferences>
       </tool>
     </tools>
+    <component type="application" bom-ref="root-component">
+      <name>testing-requirements-txt</name>
+      <version>0.1.0</version>
+      <description>some `reuqirements.txt` a root-component with all metadata</description>
+    </component>
   </metadata>
   <components>
     <component type="library" bom-ref="requirements-L7">
@@ -74,5 +79,6 @@
   <dependencies>
     <dependency ref="requirements-L4"/>
     <dependency ref="requirements-L7"/>
+    <dependency ref="root-component"/>
   </dependencies>
 </bom>
diff --git a/tests/_data/snapshots/requirements/private-packages.txt-1.2.json-file.bin b/tests/_data/snapshots/requirements/private-packages.txt-1.2.json-file.bin
index 9430918e..a46dd9a4 100644
--- a/tests/_data/snapshots/requirements/private-packages.txt-1.2.json-file.bin
+++ b/tests/_data/snapshots/requirements/private-packages.txt-1.2.json-file.bin
@@ -29,9 +29,19 @@
   "dependencies": [
     {
       "ref": "requirements-L7"
+    },
+    {
+      "ref": "root-component"
     }
   ],
   "metadata": {
+    "component": {
+      "bom-ref": "root-component",
+      "description": "some `reuqirements.txt` a root-component with all metadata",
+      "name": "testing-requirements-txt",
+      "type": "application",
+      "version": "0.1.0"
+    },
     "tools": [
       {
         "name": "cyclonedx-bom",
diff --git a/tests/_data/snapshots/requirements/private-packages.txt-1.2.xml-file.bin b/tests/_data/snapshots/requirements/private-packages.txt-1.2.xml-file.bin
index 2cf41d2c..312d5b7e 100644
--- a/tests/_data/snapshots/requirements/private-packages.txt-1.2.xml-file.bin
+++ b/tests/_data/snapshots/requirements/private-packages.txt-1.2.xml-file.bin
@@ -13,6 +13,11 @@
         <version>libVersion-testing</version>
       </tool>
     </tools>
+    <component type="application" bom-ref="root-component">
+      <name>testing-requirements-txt</name>
+      <version>0.1.0</version>
+      <description>some `reuqirements.txt` a root-component with all metadata</description>
+    </component>
   </metadata>
   <components>
     <component type="library" bom-ref="requirements-L7">
@@ -38,5 +43,6 @@
   </components>
   <dependencies>
     <dependency ref="requirements-L7"/>
+    <dependency ref="root-component"/>
   </dependencies>
 </bom>
diff --git a/tests/_data/snapshots/requirements/private-packages.txt-1.3.json-file.bin b/tests/_data/snapshots/requirements/private-packages.txt-1.3.json-file.bin
index acfb396c..046c7822 100644
--- a/tests/_data/snapshots/requirements/private-packages.txt-1.3.json-file.bin
+++ b/tests/_data/snapshots/requirements/private-packages.txt-1.3.json-file.bin
@@ -29,9 +29,19 @@
   "dependencies": [
     {
       "ref": "requirements-L7"
+    },
+    {
+      "ref": "root-component"
     }
   ],
   "metadata": {
+    "component": {
+      "bom-ref": "root-component",
+      "description": "some `reuqirements.txt` a root-component with all metadata",
+      "name": "testing-requirements-txt",
+      "type": "application",
+      "version": "0.1.0"
+    },
     "tools": [
       {
         "name": "cyclonedx-bom",
diff --git a/tests/_data/snapshots/requirements/private-packages.txt-1.3.xml-file.bin b/tests/_data/snapshots/requirements/private-packages.txt-1.3.xml-file.bin
index 0fd61ff9..12331dfe 100644
--- a/tests/_data/snapshots/requirements/private-packages.txt-1.3.xml-file.bin
+++ b/tests/_data/snapshots/requirements/private-packages.txt-1.3.xml-file.bin
@@ -13,6 +13,11 @@
         <version>libVersion-testing</version>
       </tool>
     </tools>
+    <component type="application" bom-ref="root-component">
+      <name>testing-requirements-txt</name>
+      <version>0.1.0</version>
+      <description>some `reuqirements.txt` a root-component with all metadata</description>
+    </component>
   </metadata>
   <components>
     <component type="library" bom-ref="requirements-L7">
@@ -38,5 +43,6 @@
   </components>
   <dependencies>
     <dependency ref="requirements-L7"/>
+    <dependency ref="root-component"/>
   </dependencies>
 </bom>
diff --git a/tests/_data/snapshots/requirements/private-packages.txt-1.4.json-file.bin b/tests/_data/snapshots/requirements/private-packages.txt-1.4.json-file.bin
index 1ca174e5..eced0504 100644
--- a/tests/_data/snapshots/requirements/private-packages.txt-1.4.json-file.bin
+++ b/tests/_data/snapshots/requirements/private-packages.txt-1.4.json-file.bin
@@ -29,9 +29,19 @@
   "dependencies": [
     {
       "ref": "requirements-L7"
+    },
+    {
+      "ref": "root-component"
     }
   ],
   "metadata": {
+    "component": {
+      "bom-ref": "root-component",
+      "description": "some `reuqirements.txt` a root-component with all metadata",
+      "name": "testing-requirements-txt",
+      "type": "application",
+      "version": "0.1.0"
+    },
     "tools": [
       {
         "externalReferences": [   ],
diff --git a/tests/_data/snapshots/requirements/private-packages.txt-1.4.xml-file.bin b/tests/_data/snapshots/requirements/private-packages.txt-1.4.xml-file.bin
index 1c749b7d..116f18ff 100644
--- a/tests/_data/snapshots/requirements/private-packages.txt-1.4.xml-file.bin
+++ b/tests/_data/snapshots/requirements/private-packages.txt-1.4.xml-file.bin
@@ -40,6 +40,11 @@
         <externalReferences><!-- stripped --></externalReferences>
       </tool>
     </tools>
+    <component type="application" bom-ref="root-component">
+      <name>testing-requirements-txt</name>
+      <version>0.1.0</version>
+      <description>some `reuqirements.txt` a root-component with all metadata</description>
+    </component>
   </metadata>
   <components>
     <component type="library" bom-ref="requirements-L7">
@@ -65,5 +70,6 @@
   </components>
   <dependencies>
     <dependency ref="requirements-L7"/>
+    <dependency ref="root-component"/>
   </dependencies>
 </bom>
diff --git a/tests/_data/snapshots/requirements/regression-issue448.cp1252.txt.bin-1.2.json-file.bin b/tests/_data/snapshots/requirements/regression-issue448.cp1252.txt.bin-1.2.json-file.bin
index 5ab249db..0906755b 100644
--- a/tests/_data/snapshots/requirements/regression-issue448.cp1252.txt.bin-1.2.json-file.bin
+++ b/tests/_data/snapshots/requirements/regression-issue448.cp1252.txt.bin-1.2.json-file.bin
@@ -55,9 +55,19 @@
     },
     {
       "ref": "requirements-L8"
+    },
+    {
+      "ref": "root-component"
     }
   ],
   "metadata": {
+    "component": {
+      "bom-ref": "root-component",
+      "description": "some `reuqirements.txt` a root-component with all metadata",
+      "name": "testing-requirements-txt",
+      "type": "application",
+      "version": "0.1.0"
+    },
     "tools": [
       {
         "name": "cyclonedx-bom",
diff --git a/tests/_data/snapshots/requirements/regression-issue448.cp1252.txt.bin-1.2.xml-file.bin b/tests/_data/snapshots/requirements/regression-issue448.cp1252.txt.bin-1.2.xml-file.bin
index 79629f3e..33c9c20b 100644
--- a/tests/_data/snapshots/requirements/regression-issue448.cp1252.txt.bin-1.2.xml-file.bin
+++ b/tests/_data/snapshots/requirements/regression-issue448.cp1252.txt.bin-1.2.xml-file.bin
@@ -13,6 +13,11 @@
         <version>libVersion-testing</version>
       </tool>
     </tools>
+    <component type="application" bom-ref="root-component">
+      <name>testing-requirements-txt</name>
+      <version>0.1.0</version>
+      <description>some `reuqirements.txt` a root-component with all metadata</description>
+    </component>
   </metadata>
   <components>
     <component type="library" bom-ref="requirements-L6">
@@ -56,5 +61,6 @@
     <dependency ref="requirements-L6"/>
     <dependency ref="requirements-L7"/>
     <dependency ref="requirements-L8"/>
+    <dependency ref="root-component"/>
   </dependencies>
 </bom>
diff --git a/tests/_data/snapshots/requirements/regression-issue448.cp1252.txt.bin-1.3.json-file.bin b/tests/_data/snapshots/requirements/regression-issue448.cp1252.txt.bin-1.3.json-file.bin
index 33edf346..81288fbc 100644
--- a/tests/_data/snapshots/requirements/regression-issue448.cp1252.txt.bin-1.3.json-file.bin
+++ b/tests/_data/snapshots/requirements/regression-issue448.cp1252.txt.bin-1.3.json-file.bin
@@ -55,9 +55,19 @@
     },
     {
       "ref": "requirements-L8"
+    },
+    {
+      "ref": "root-component"
     }
   ],
   "metadata": {
+    "component": {
+      "bom-ref": "root-component",
+      "description": "some `reuqirements.txt` a root-component with all metadata",
+      "name": "testing-requirements-txt",
+      "type": "application",
+      "version": "0.1.0"
+    },
     "tools": [
       {
         "name": "cyclonedx-bom",
diff --git a/tests/_data/snapshots/requirements/regression-issue448.cp1252.txt.bin-1.3.xml-file.bin b/tests/_data/snapshots/requirements/regression-issue448.cp1252.txt.bin-1.3.xml-file.bin
index c0227f2c..0ce54932 100644
--- a/tests/_data/snapshots/requirements/regression-issue448.cp1252.txt.bin-1.3.xml-file.bin
+++ b/tests/_data/snapshots/requirements/regression-issue448.cp1252.txt.bin-1.3.xml-file.bin
@@ -13,6 +13,11 @@
         <version>libVersion-testing</version>
       </tool>
     </tools>
+    <component type="application" bom-ref="root-component">
+      <name>testing-requirements-txt</name>
+      <version>0.1.0</version>
+      <description>some `reuqirements.txt` a root-component with all metadata</description>
+    </component>
   </metadata>
   <components>
     <component type="library" bom-ref="requirements-L6">
@@ -56,5 +61,6 @@
     <dependency ref="requirements-L6"/>
     <dependency ref="requirements-L7"/>
     <dependency ref="requirements-L8"/>
+    <dependency ref="root-component"/>
   </dependencies>
 </bom>
diff --git a/tests/_data/snapshots/requirements/regression-issue448.cp1252.txt.bin-1.4.json-file.bin b/tests/_data/snapshots/requirements/regression-issue448.cp1252.txt.bin-1.4.json-file.bin
index 07dc044d..6bbd7da9 100644
--- a/tests/_data/snapshots/requirements/regression-issue448.cp1252.txt.bin-1.4.json-file.bin
+++ b/tests/_data/snapshots/requirements/regression-issue448.cp1252.txt.bin-1.4.json-file.bin
@@ -52,9 +52,19 @@
     },
     {
       "ref": "requirements-L8"
+    },
+    {
+      "ref": "root-component"
     }
   ],
   "metadata": {
+    "component": {
+      "bom-ref": "root-component",
+      "description": "some `reuqirements.txt` a root-component with all metadata",
+      "name": "testing-requirements-txt",
+      "type": "application",
+      "version": "0.1.0"
+    },
     "tools": [
       {
         "externalReferences": [   ],
diff --git a/tests/_data/snapshots/requirements/regression-issue448.cp1252.txt.bin-1.4.xml-file.bin b/tests/_data/snapshots/requirements/regression-issue448.cp1252.txt.bin-1.4.xml-file.bin
index 39b06991..ed5c50ac 100644
--- a/tests/_data/snapshots/requirements/regression-issue448.cp1252.txt.bin-1.4.xml-file.bin
+++ b/tests/_data/snapshots/requirements/regression-issue448.cp1252.txt.bin-1.4.xml-file.bin
@@ -40,6 +40,11 @@
         <externalReferences><!-- stripped --></externalReferences>
       </tool>
     </tools>
+    <component type="application" bom-ref="root-component">
+      <name>testing-requirements-txt</name>
+      <version>0.1.0</version>
+      <description>some `reuqirements.txt` a root-component with all metadata</description>
+    </component>
   </metadata>
   <components>
     <component type="library" bom-ref="requirements-L6">
@@ -80,5 +85,6 @@
     <dependency ref="requirements-L6"/>
     <dependency ref="requirements-L7"/>
     <dependency ref="requirements-L8"/>
+    <dependency ref="root-component"/>
   </dependencies>
 </bom>
diff --git a/tests/_data/snapshots/requirements/with-comments.txt-1.2.json-file.bin b/tests/_data/snapshots/requirements/with-comments.txt-1.2.json-file.bin
index a4ebb28b..fd6b9f21 100644
--- a/tests/_data/snapshots/requirements/with-comments.txt-1.2.json-file.bin
+++ b/tests/_data/snapshots/requirements/with-comments.txt-1.2.json-file.bin
@@ -91,9 +91,19 @@
     },
     {
       "ref": "requirements-L5"
+    },
+    {
+      "ref": "root-component"
     }
   ],
   "metadata": {
+    "component": {
+      "bom-ref": "root-component",
+      "description": "some `reuqirements.txt` a root-component with all metadata",
+      "name": "testing-requirements-txt",
+      "type": "application",
+      "version": "0.1.0"
+    },
     "tools": [
       {
         "name": "cyclonedx-bom",
diff --git a/tests/_data/snapshots/requirements/with-comments.txt-1.2.xml-file.bin b/tests/_data/snapshots/requirements/with-comments.txt-1.2.xml-file.bin
index b1706738..b38b667b 100644
--- a/tests/_data/snapshots/requirements/with-comments.txt-1.2.xml-file.bin
+++ b/tests/_data/snapshots/requirements/with-comments.txt-1.2.xml-file.bin
@@ -13,6 +13,11 @@
         <version>libVersion-testing</version>
       </tool>
     </tools>
+    <component type="application" bom-ref="root-component">
+      <name>testing-requirements-txt</name>
+      <version>0.1.0</version>
+      <description>some `reuqirements.txt` a root-component with all metadata</description>
+    </component>
   </metadata>
   <components>
     <component type="library" bom-ref="requirements-L1">
@@ -82,5 +87,6 @@
     <dependency ref="requirements-L3"/>
     <dependency ref="requirements-L4"/>
     <dependency ref="requirements-L5"/>
+    <dependency ref="root-component"/>
   </dependencies>
 </bom>
diff --git a/tests/_data/snapshots/requirements/with-comments.txt-1.3.json-file.bin b/tests/_data/snapshots/requirements/with-comments.txt-1.3.json-file.bin
index 6f64580d..547346e5 100644
--- a/tests/_data/snapshots/requirements/with-comments.txt-1.3.json-file.bin
+++ b/tests/_data/snapshots/requirements/with-comments.txt-1.3.json-file.bin
@@ -91,9 +91,19 @@
     },
     {
       "ref": "requirements-L5"
+    },
+    {
+      "ref": "root-component"
     }
   ],
   "metadata": {
+    "component": {
+      "bom-ref": "root-component",
+      "description": "some `reuqirements.txt` a root-component with all metadata",
+      "name": "testing-requirements-txt",
+      "type": "application",
+      "version": "0.1.0"
+    },
     "tools": [
       {
         "name": "cyclonedx-bom",
diff --git a/tests/_data/snapshots/requirements/with-comments.txt-1.3.xml-file.bin b/tests/_data/snapshots/requirements/with-comments.txt-1.3.xml-file.bin
index e16dafc2..878a2b92 100644
--- a/tests/_data/snapshots/requirements/with-comments.txt-1.3.xml-file.bin
+++ b/tests/_data/snapshots/requirements/with-comments.txt-1.3.xml-file.bin
@@ -13,6 +13,11 @@
         <version>libVersion-testing</version>
       </tool>
     </tools>
+    <component type="application" bom-ref="root-component">
+      <name>testing-requirements-txt</name>
+      <version>0.1.0</version>
+      <description>some `reuqirements.txt` a root-component with all metadata</description>
+    </component>
   </metadata>
   <components>
     <component type="library" bom-ref="requirements-L1">
@@ -82,5 +87,6 @@
     <dependency ref="requirements-L3"/>
     <dependency ref="requirements-L4"/>
     <dependency ref="requirements-L5"/>
+    <dependency ref="root-component"/>
   </dependencies>
 </bom>
diff --git a/tests/_data/snapshots/requirements/with-comments.txt-1.4.json-file.bin b/tests/_data/snapshots/requirements/with-comments.txt-1.4.json-file.bin
index 9e2a8e28..ab88420d 100644
--- a/tests/_data/snapshots/requirements/with-comments.txt-1.4.json-file.bin
+++ b/tests/_data/snapshots/requirements/with-comments.txt-1.4.json-file.bin
@@ -91,9 +91,19 @@
     },
     {
       "ref": "requirements-L5"
+    },
+    {
+      "ref": "root-component"
     }
   ],
   "metadata": {
+    "component": {
+      "bom-ref": "root-component",
+      "description": "some `reuqirements.txt` a root-component with all metadata",
+      "name": "testing-requirements-txt",
+      "type": "application",
+      "version": "0.1.0"
+    },
     "tools": [
       {
         "externalReferences": [   ],
diff --git a/tests/_data/snapshots/requirements/with-comments.txt-1.4.xml-file.bin b/tests/_data/snapshots/requirements/with-comments.txt-1.4.xml-file.bin
index 743ded61..2c05c0e4 100644
--- a/tests/_data/snapshots/requirements/with-comments.txt-1.4.xml-file.bin
+++ b/tests/_data/snapshots/requirements/with-comments.txt-1.4.xml-file.bin
@@ -40,6 +40,11 @@
         <externalReferences><!-- stripped --></externalReferences>
       </tool>
     </tools>
+    <component type="application" bom-ref="root-component">
+      <name>testing-requirements-txt</name>
+      <version>0.1.0</version>
+      <description>some `reuqirements.txt` a root-component with all metadata</description>
+    </component>
   </metadata>
   <components>
     <component type="library" bom-ref="requirements-L1">
@@ -109,5 +114,6 @@
     <dependency ref="requirements-L3"/>
     <dependency ref="requirements-L4"/>
     <dependency ref="requirements-L5"/>
+    <dependency ref="root-component"/>
   </dependencies>
 </bom>
diff --git a/tests/_data/snapshots/requirements/with-extras.txt-1.2.json-file.bin b/tests/_data/snapshots/requirements/with-extras.txt-1.2.json-file.bin
index 7c6c6183..8127d0d4 100644
--- a/tests/_data/snapshots/requirements/with-extras.txt-1.2.json-file.bin
+++ b/tests/_data/snapshots/requirements/with-extras.txt-1.2.json-file.bin
@@ -19,9 +19,19 @@
   "dependencies": [
     {
       "ref": "requirements-L3"
+    },
+    {
+      "ref": "root-component"
     }
   ],
   "metadata": {
+    "component": {
+      "bom-ref": "root-component",
+      "description": "some `reuqirements.txt` a root-component with all metadata",
+      "name": "testing-requirements-txt",
+      "type": "application",
+      "version": "0.1.0"
+    },
     "tools": [
       {
         "name": "cyclonedx-bom",
diff --git a/tests/_data/snapshots/requirements/with-extras.txt-1.2.xml-file.bin b/tests/_data/snapshots/requirements/with-extras.txt-1.2.xml-file.bin
index 83835cb1..2c1190d3 100644
--- a/tests/_data/snapshots/requirements/with-extras.txt-1.2.xml-file.bin
+++ b/tests/_data/snapshots/requirements/with-extras.txt-1.2.xml-file.bin
@@ -13,6 +13,11 @@
         <version>libVersion-testing</version>
       </tool>
     </tools>
+    <component type="application" bom-ref="root-component">
+      <name>testing-requirements-txt</name>
+      <version>0.1.0</version>
+      <description>some `reuqirements.txt` a root-component with all metadata</description>
+    </component>
   </metadata>
   <components>
     <component type="library" bom-ref="requirements-L3">
@@ -30,5 +35,6 @@
   </components>
   <dependencies>
     <dependency ref="requirements-L3"/>
+    <dependency ref="root-component"/>
   </dependencies>
 </bom>
diff --git a/tests/_data/snapshots/requirements/with-extras.txt-1.3.json-file.bin b/tests/_data/snapshots/requirements/with-extras.txt-1.3.json-file.bin
index b142eb75..b3cc1c47 100644
--- a/tests/_data/snapshots/requirements/with-extras.txt-1.3.json-file.bin
+++ b/tests/_data/snapshots/requirements/with-extras.txt-1.3.json-file.bin
@@ -29,9 +29,19 @@
   "dependencies": [
     {
       "ref": "requirements-L3"
+    },
+    {
+      "ref": "root-component"
     }
   ],
   "metadata": {
+    "component": {
+      "bom-ref": "root-component",
+      "description": "some `reuqirements.txt` a root-component with all metadata",
+      "name": "testing-requirements-txt",
+      "type": "application",
+      "version": "0.1.0"
+    },
     "tools": [
       {
         "name": "cyclonedx-bom",
diff --git a/tests/_data/snapshots/requirements/with-extras.txt-1.3.xml-file.bin b/tests/_data/snapshots/requirements/with-extras.txt-1.3.xml-file.bin
index e18f53f1..2e7d5a42 100644
--- a/tests/_data/snapshots/requirements/with-extras.txt-1.3.xml-file.bin
+++ b/tests/_data/snapshots/requirements/with-extras.txt-1.3.xml-file.bin
@@ -13,6 +13,11 @@
         <version>libVersion-testing</version>
       </tool>
     </tools>
+    <component type="application" bom-ref="root-component">
+      <name>testing-requirements-txt</name>
+      <version>0.1.0</version>
+      <description>some `reuqirements.txt` a root-component with all metadata</description>
+    </component>
   </metadata>
   <components>
     <component type="library" bom-ref="requirements-L3">
@@ -34,5 +39,6 @@
   </components>
   <dependencies>
     <dependency ref="requirements-L3"/>
+    <dependency ref="root-component"/>
   </dependencies>
 </bom>
diff --git a/tests/_data/snapshots/requirements/with-extras.txt-1.4.json-file.bin b/tests/_data/snapshots/requirements/with-extras.txt-1.4.json-file.bin
index 7114ebcd..40a15a40 100644
--- a/tests/_data/snapshots/requirements/with-extras.txt-1.4.json-file.bin
+++ b/tests/_data/snapshots/requirements/with-extras.txt-1.4.json-file.bin
@@ -29,9 +29,19 @@
   "dependencies": [
     {
       "ref": "requirements-L3"
+    },
+    {
+      "ref": "root-component"
     }
   ],
   "metadata": {
+    "component": {
+      "bom-ref": "root-component",
+      "description": "some `reuqirements.txt` a root-component with all metadata",
+      "name": "testing-requirements-txt",
+      "type": "application",
+      "version": "0.1.0"
+    },
     "tools": [
       {
         "externalReferences": [   ],
diff --git a/tests/_data/snapshots/requirements/with-extras.txt-1.4.xml-file.bin b/tests/_data/snapshots/requirements/with-extras.txt-1.4.xml-file.bin
index d547e445..e9cf4c80 100644
--- a/tests/_data/snapshots/requirements/with-extras.txt-1.4.xml-file.bin
+++ b/tests/_data/snapshots/requirements/with-extras.txt-1.4.xml-file.bin
@@ -40,6 +40,11 @@
         <externalReferences><!-- stripped --></externalReferences>
       </tool>
     </tools>
+    <component type="application" bom-ref="root-component">
+      <name>testing-requirements-txt</name>
+      <version>0.1.0</version>
+      <description>some `reuqirements.txt` a root-component with all metadata</description>
+    </component>
   </metadata>
   <components>
     <component type="library" bom-ref="requirements-L3">
@@ -61,5 +66,6 @@
   </components>
   <dependencies>
     <dependency ref="requirements-L3"/>
+    <dependency ref="root-component"/>
   </dependencies>
 </bom>
diff --git a/tests/_data/snapshots/requirements/with-hashes.txt-1.2.json-file.bin b/tests/_data/snapshots/requirements/with-hashes.txt-1.2.json-file.bin
index 785ae11a..1ef1d29a 100644
--- a/tests/_data/snapshots/requirements/with-hashes.txt-1.2.json-file.bin
+++ b/tests/_data/snapshots/requirements/with-hashes.txt-1.2.json-file.bin
@@ -91,9 +91,19 @@
     },
     {
       "ref": "requirements-L7"
+    },
+    {
+      "ref": "root-component"
     }
   ],
   "metadata": {
+    "component": {
+      "bom-ref": "root-component",
+      "description": "some `reuqirements.txt` a root-component with all metadata",
+      "name": "testing-requirements-txt",
+      "type": "application",
+      "version": "0.1.0"
+    },
     "tools": [
       {
         "name": "cyclonedx-bom",
diff --git a/tests/_data/snapshots/requirements/with-hashes.txt-1.2.xml-file.bin b/tests/_data/snapshots/requirements/with-hashes.txt-1.2.xml-file.bin
index 0677ba56..cdd2b1fb 100644
--- a/tests/_data/snapshots/requirements/with-hashes.txt-1.2.xml-file.bin
+++ b/tests/_data/snapshots/requirements/with-hashes.txt-1.2.xml-file.bin
@@ -13,6 +13,11 @@
         <version>libVersion-testing</version>
       </tool>
     </tools>
+    <component type="application" bom-ref="root-component">
+      <name>testing-requirements-txt</name>
+      <version>0.1.0</version>
+      <description>some `reuqirements.txt` a root-component with all metadata</description>
+    </component>
   </metadata>
   <components>
     <component type="library" bom-ref="requirements-L11">
@@ -82,5 +87,6 @@
     <dependency ref="requirements-L21"/>
     <dependency ref="requirements-L4"/>
     <dependency ref="requirements-L7"/>
+    <dependency ref="root-component"/>
   </dependencies>
 </bom>
diff --git a/tests/_data/snapshots/requirements/with-hashes.txt-1.3.json-file.bin b/tests/_data/snapshots/requirements/with-hashes.txt-1.3.json-file.bin
index ae2f9cda..7a449172 100644
--- a/tests/_data/snapshots/requirements/with-hashes.txt-1.3.json-file.bin
+++ b/tests/_data/snapshots/requirements/with-hashes.txt-1.3.json-file.bin
@@ -131,9 +131,19 @@
     },
     {
       "ref": "requirements-L7"
+    },
+    {
+      "ref": "root-component"
     }
   ],
   "metadata": {
+    "component": {
+      "bom-ref": "root-component",
+      "description": "some `reuqirements.txt` a root-component with all metadata",
+      "name": "testing-requirements-txt",
+      "type": "application",
+      "version": "0.1.0"
+    },
     "tools": [
       {
         "name": "cyclonedx-bom",
diff --git a/tests/_data/snapshots/requirements/with-hashes.txt-1.3.xml-file.bin b/tests/_data/snapshots/requirements/with-hashes.txt-1.3.xml-file.bin
index 0b03d9a0..ba564a7d 100644
--- a/tests/_data/snapshots/requirements/with-hashes.txt-1.3.xml-file.bin
+++ b/tests/_data/snapshots/requirements/with-hashes.txt-1.3.xml-file.bin
@@ -13,6 +13,11 @@
         <version>libVersion-testing</version>
       </tool>
     </tools>
+    <component type="application" bom-ref="root-component">
+      <name>testing-requirements-txt</name>
+      <version>0.1.0</version>
+      <description>some `reuqirements.txt` a root-component with all metadata</description>
+    </component>
   </metadata>
   <components>
     <component type="library" bom-ref="requirements-L11">
@@ -98,5 +103,6 @@
     <dependency ref="requirements-L21"/>
     <dependency ref="requirements-L4"/>
     <dependency ref="requirements-L7"/>
+    <dependency ref="root-component"/>
   </dependencies>
 </bom>
diff --git a/tests/_data/snapshots/requirements/with-hashes.txt-1.4.json-file.bin b/tests/_data/snapshots/requirements/with-hashes.txt-1.4.json-file.bin
index d5d98b8f..a71c99f1 100644
--- a/tests/_data/snapshots/requirements/with-hashes.txt-1.4.json-file.bin
+++ b/tests/_data/snapshots/requirements/with-hashes.txt-1.4.json-file.bin
@@ -130,9 +130,19 @@
     },
     {
       "ref": "requirements-L7"
+    },
+    {
+      "ref": "root-component"
     }
   ],
   "metadata": {
+    "component": {
+      "bom-ref": "root-component",
+      "description": "some `reuqirements.txt` a root-component with all metadata",
+      "name": "testing-requirements-txt",
+      "type": "application",
+      "version": "0.1.0"
+    },
     "tools": [
       {
         "externalReferences": [   ],
diff --git a/tests/_data/snapshots/requirements/with-hashes.txt-1.4.xml-file.bin b/tests/_data/snapshots/requirements/with-hashes.txt-1.4.xml-file.bin
index f52bca08..bc83ee13 100644
--- a/tests/_data/snapshots/requirements/with-hashes.txt-1.4.xml-file.bin
+++ b/tests/_data/snapshots/requirements/with-hashes.txt-1.4.xml-file.bin
@@ -40,6 +40,11 @@
         <externalReferences><!-- stripped --></externalReferences>
       </tool>
     </tools>
+    <component type="application" bom-ref="root-component">
+      <name>testing-requirements-txt</name>
+      <version>0.1.0</version>
+      <description>some `reuqirements.txt` a root-component with all metadata</description>
+    </component>
   </metadata>
   <components>
     <component type="library" bom-ref="requirements-L11">
@@ -124,5 +129,6 @@
     <dependency ref="requirements-L21"/>
     <dependency ref="requirements-L4"/>
     <dependency ref="requirements-L7"/>
+    <dependency ref="root-component"/>
   </dependencies>
 </bom>
diff --git a/tests/_data/snapshots/requirements/with-urls.txt-1.2.json-file.bin b/tests/_data/snapshots/requirements/with-urls.txt-1.2.json-file.bin
index 6a2396bd..65d94371 100644
--- a/tests/_data/snapshots/requirements/with-urls.txt-1.2.json-file.bin
+++ b/tests/_data/snapshots/requirements/with-urls.txt-1.2.json-file.bin
@@ -126,9 +126,19 @@
     },
     {
       "ref": "requirements-L9"
+    },
+    {
+      "ref": "root-component"
     }
   ],
   "metadata": {
+    "component": {
+      "bom-ref": "root-component",
+      "description": "some `reuqirements.txt` a root-component with all metadata",
+      "name": "testing-requirements-txt",
+      "type": "application",
+      "version": "0.1.0"
+    },
     "tools": [
       {
         "name": "cyclonedx-bom",
diff --git a/tests/_data/snapshots/requirements/with-urls.txt-1.2.xml-file.bin b/tests/_data/snapshots/requirements/with-urls.txt-1.2.xml-file.bin
index 9e67b581..edc4c890 100644
--- a/tests/_data/snapshots/requirements/with-urls.txt-1.2.xml-file.bin
+++ b/tests/_data/snapshots/requirements/with-urls.txt-1.2.xml-file.bin
@@ -13,6 +13,11 @@
         <version>libVersion-testing</version>
       </tool>
     </tools>
+    <component type="application" bom-ref="root-component">
+      <name>testing-requirements-txt</name>
+      <version>0.1.0</version>
+      <description>some `reuqirements.txt` a root-component with all metadata</description>
+    </component>
   </metadata>
   <components>
     <component type="library" bom-ref="requirements-L11">
@@ -107,5 +112,6 @@
     <dependency ref="requirements-L5"/>
     <dependency ref="requirements-L7"/>
     <dependency ref="requirements-L9"/>
+    <dependency ref="root-component"/>
   </dependencies>
 </bom>
diff --git a/tests/_data/snapshots/requirements/with-urls.txt-1.3.json-file.bin b/tests/_data/snapshots/requirements/with-urls.txt-1.3.json-file.bin
index ab5d1242..0ee82def 100644
--- a/tests/_data/snapshots/requirements/with-urls.txt-1.3.json-file.bin
+++ b/tests/_data/snapshots/requirements/with-urls.txt-1.3.json-file.bin
@@ -126,9 +126,19 @@
     },
     {
       "ref": "requirements-L9"
+    },
+    {
+      "ref": "root-component"
     }
   ],
   "metadata": {
+    "component": {
+      "bom-ref": "root-component",
+      "description": "some `reuqirements.txt` a root-component with all metadata",
+      "name": "testing-requirements-txt",
+      "type": "application",
+      "version": "0.1.0"
+    },
     "tools": [
       {
         "name": "cyclonedx-bom",
diff --git a/tests/_data/snapshots/requirements/with-urls.txt-1.3.xml-file.bin b/tests/_data/snapshots/requirements/with-urls.txt-1.3.xml-file.bin
index ee1b960c..72b21c59 100644
--- a/tests/_data/snapshots/requirements/with-urls.txt-1.3.xml-file.bin
+++ b/tests/_data/snapshots/requirements/with-urls.txt-1.3.xml-file.bin
@@ -13,6 +13,11 @@
         <version>libVersion-testing</version>
       </tool>
     </tools>
+    <component type="application" bom-ref="root-component">
+      <name>testing-requirements-txt</name>
+      <version>0.1.0</version>
+      <description>some `reuqirements.txt` a root-component with all metadata</description>
+    </component>
   </metadata>
   <components>
     <component type="library" bom-ref="requirements-L11">
@@ -107,5 +112,6 @@
     <dependency ref="requirements-L5"/>
     <dependency ref="requirements-L7"/>
     <dependency ref="requirements-L9"/>
+    <dependency ref="root-component"/>
   </dependencies>
 </bom>
diff --git a/tests/_data/snapshots/requirements/with-urls.txt-1.4.json-file.bin b/tests/_data/snapshots/requirements/with-urls.txt-1.4.json-file.bin
index b60d3a46..eac344c0 100644
--- a/tests/_data/snapshots/requirements/with-urls.txt-1.4.json-file.bin
+++ b/tests/_data/snapshots/requirements/with-urls.txt-1.4.json-file.bin
@@ -120,9 +120,19 @@
     },
     {
       "ref": "requirements-L9"
+    },
+    {
+      "ref": "root-component"
     }
   ],
   "metadata": {
+    "component": {
+      "bom-ref": "root-component",
+      "description": "some `reuqirements.txt` a root-component with all metadata",
+      "name": "testing-requirements-txt",
+      "type": "application",
+      "version": "0.1.0"
+    },
     "tools": [
       {
         "externalReferences": [   ],
diff --git a/tests/_data/snapshots/requirements/with-urls.txt-1.4.xml-file.bin b/tests/_data/snapshots/requirements/with-urls.txt-1.4.xml-file.bin
index 0563d7c4..9c33a723 100644
--- a/tests/_data/snapshots/requirements/with-urls.txt-1.4.xml-file.bin
+++ b/tests/_data/snapshots/requirements/with-urls.txt-1.4.xml-file.bin
@@ -40,6 +40,11 @@
         <externalReferences><!-- stripped --></externalReferences>
       </tool>
     </tools>
+    <component type="application" bom-ref="root-component">
+      <name>testing-requirements-txt</name>
+      <version>0.1.0</version>
+      <description>some `reuqirements.txt` a root-component with all metadata</description>
+    </component>
   </metadata>
   <components>
     <component type="library" bom-ref="requirements-L11">
@@ -128,5 +133,6 @@
     <dependency ref="requirements-L5"/>
     <dependency ref="requirements-L7"/>
     <dependency ref="requirements-L9"/>
+    <dependency ref="root-component"/>
   </dependencies>
 </bom>
diff --git a/tests/_data/snapshots/requirements/without-pinned-versions.txt-1.2.json-file.bin b/tests/_data/snapshots/requirements/without-pinned-versions.txt-1.2.json-file.bin
index 51e19752..f5e018f5 100644
--- a/tests/_data/snapshots/requirements/without-pinned-versions.txt-1.2.json-file.bin
+++ b/tests/_data/snapshots/requirements/without-pinned-versions.txt-1.2.json-file.bin
@@ -55,9 +55,19 @@
     },
     {
       "ref": "requirements-L3"
+    },
+    {
+      "ref": "root-component"
     }
   ],
   "metadata": {
+    "component": {
+      "bom-ref": "root-component",
+      "description": "some `reuqirements.txt` a root-component with all metadata",
+      "name": "testing-requirements-txt",
+      "type": "application",
+      "version": "0.1.0"
+    },
     "tools": [
       {
         "name": "cyclonedx-bom",
diff --git a/tests/_data/snapshots/requirements/without-pinned-versions.txt-1.2.xml-file.bin b/tests/_data/snapshots/requirements/without-pinned-versions.txt-1.2.xml-file.bin
index 2e4ce077..0d80e3bb 100644
--- a/tests/_data/snapshots/requirements/without-pinned-versions.txt-1.2.xml-file.bin
+++ b/tests/_data/snapshots/requirements/without-pinned-versions.txt-1.2.xml-file.bin
@@ -13,6 +13,11 @@
         <version>libVersion-testing</version>
       </tool>
     </tools>
+    <component type="application" bom-ref="root-component">
+      <name>testing-requirements-txt</name>
+      <version>0.1.0</version>
+      <description>some `reuqirements.txt` a root-component with all metadata</description>
+    </component>
   </metadata>
   <components>
     <component type="library" bom-ref="requirements-L1">
@@ -56,5 +61,6 @@
     <dependency ref="requirements-L1"/>
     <dependency ref="requirements-L2"/>
     <dependency ref="requirements-L3"/>
+    <dependency ref="root-component"/>
   </dependencies>
 </bom>
diff --git a/tests/_data/snapshots/requirements/without-pinned-versions.txt-1.3.json-file.bin b/tests/_data/snapshots/requirements/without-pinned-versions.txt-1.3.json-file.bin
index 1e3fe2ac..28da3c9a 100644
--- a/tests/_data/snapshots/requirements/without-pinned-versions.txt-1.3.json-file.bin
+++ b/tests/_data/snapshots/requirements/without-pinned-versions.txt-1.3.json-file.bin
@@ -55,9 +55,19 @@
     },
     {
       "ref": "requirements-L3"
+    },
+    {
+      "ref": "root-component"
     }
   ],
   "metadata": {
+    "component": {
+      "bom-ref": "root-component",
+      "description": "some `reuqirements.txt` a root-component with all metadata",
+      "name": "testing-requirements-txt",
+      "type": "application",
+      "version": "0.1.0"
+    },
     "tools": [
       {
         "name": "cyclonedx-bom",
diff --git a/tests/_data/snapshots/requirements/without-pinned-versions.txt-1.3.xml-file.bin b/tests/_data/snapshots/requirements/without-pinned-versions.txt-1.3.xml-file.bin
index c944348c..4348e831 100644
--- a/tests/_data/snapshots/requirements/without-pinned-versions.txt-1.3.xml-file.bin
+++ b/tests/_data/snapshots/requirements/without-pinned-versions.txt-1.3.xml-file.bin
@@ -13,6 +13,11 @@
         <version>libVersion-testing</version>
       </tool>
     </tools>
+    <component type="application" bom-ref="root-component">
+      <name>testing-requirements-txt</name>
+      <version>0.1.0</version>
+      <description>some `reuqirements.txt` a root-component with all metadata</description>
+    </component>
   </metadata>
   <components>
     <component type="library" bom-ref="requirements-L1">
@@ -56,5 +61,6 @@
     <dependency ref="requirements-L1"/>
     <dependency ref="requirements-L2"/>
     <dependency ref="requirements-L3"/>
+    <dependency ref="root-component"/>
   </dependencies>
 </bom>
diff --git a/tests/_data/snapshots/requirements/without-pinned-versions.txt-1.4.json-file.bin b/tests/_data/snapshots/requirements/without-pinned-versions.txt-1.4.json-file.bin
index 0be6cbd0..d8f43d7c 100644
--- a/tests/_data/snapshots/requirements/without-pinned-versions.txt-1.4.json-file.bin
+++ b/tests/_data/snapshots/requirements/without-pinned-versions.txt-1.4.json-file.bin
@@ -52,9 +52,19 @@
     },
     {
       "ref": "requirements-L3"
+    },
+    {
+      "ref": "root-component"
     }
   ],
   "metadata": {
+    "component": {
+      "bom-ref": "root-component",
+      "description": "some `reuqirements.txt` a root-component with all metadata",
+      "name": "testing-requirements-txt",
+      "type": "application",
+      "version": "0.1.0"
+    },
     "tools": [
       {
         "externalReferences": [   ],
diff --git a/tests/_data/snapshots/requirements/without-pinned-versions.txt-1.4.xml-file.bin b/tests/_data/snapshots/requirements/without-pinned-versions.txt-1.4.xml-file.bin
index c6b3b32e..b7c9ddd7 100644
--- a/tests/_data/snapshots/requirements/without-pinned-versions.txt-1.4.xml-file.bin
+++ b/tests/_data/snapshots/requirements/without-pinned-versions.txt-1.4.xml-file.bin
@@ -40,6 +40,11 @@
         <externalReferences><!-- stripped --></externalReferences>
       </tool>
     </tools>
+    <component type="application" bom-ref="root-component">
+      <name>testing-requirements-txt</name>
+      <version>0.1.0</version>
+      <description>some `reuqirements.txt` a root-component with all metadata</description>
+    </component>
   </metadata>
   <components>
     <component type="library" bom-ref="requirements-L1">
@@ -80,5 +85,6 @@
     <dependency ref="requirements-L1"/>
     <dependency ref="requirements-L2"/>
     <dependency ref="requirements-L3"/>
+    <dependency ref="root-component"/>
   </dependencies>
 </bom>
diff --git a/tests/integration/test_poetry.py b/tests/integration/test_poetry.py
index 512fa279..abfc6e22 100644
--- a/tests/integration/test_poetry.py
+++ b/tests/integration/test_poetry.py
@@ -69,7 +69,7 @@ def test_cli_fails_with_dir_not_found(self) -> None:
             err = err.getvalue()
             out = out.getvalue()
         self.assertNotEqual(0, res, err)
-        self.assertIn("No such file or directory: 'something-that-must-not-exist.testing", err)
+        self.assertIn('Could not open pyproject file: something-that-must-not-exist.testing', err)
 
     def test_cli_fails_with_groups_not_found(self) -> None:
         projectdir = random.choice(projectdirs)  # nosec B311
diff --git a/tests/integration/test_requirements.py b/tests/integration/test_requirements.py
index 00763046..63db8191 100644
--- a/tests/integration/test_requirements.py
+++ b/tests/integration/test_requirements.py
@@ -17,6 +17,7 @@
 
 
 import os
+import random
 from contextlib import redirect_stderr, redirect_stdout
 from glob import glob
 from io import StringIO, TextIOWrapper
@@ -33,6 +34,8 @@
 
 infiles = glob(join(INFILES_DIRECTORY, 'requirements', '*.txt*'))
 
+pyproject_file = join(INFILES_DIRECTORY, 'requirements', 'pyproject.toml')
+
 unsupported_of_sf = [
     (OutputFormat.JSON, SchemaVersion.V1_1),
     (OutputFormat.JSON, SchemaVersion.V1_0),
@@ -73,7 +76,26 @@ def test_cli_with_file_not_found(self) -> None:
             err = err.getvalue()
             out = out.getvalue()
         self.assertNotEqual(0, res, err)
-        self.assertIn("No such file or directory: 'something-that-must-not-exist.testing'", err)
+        self.assertIn('Could not open requirements file: something-that-must-not-exist.testing', err)
+
+    def test_cli_with_pyproject_not_found(self) -> None:
+        with StringIO() as err, StringIO() as out:
+            err.name = '<fakeerr>'
+            out.name = '<fakeout>'
+            with redirect_stderr(err), redirect_stdout(out):
+                res = run_cli(argv=[
+                    'requirements',
+                    '-vvv',
+                    f'--sv={SchemaVersion.V1_4.to_version()}',
+                    f'--of={OutputFormat.XML.name}',
+                    '--outfile=-',
+                    '--pyproject=something-that-must-not-exist.testing',
+                    random.choice(test_data)  # nosec B311
+                ])
+            err = err.getvalue()
+            out = out.getvalue()
+        self.assertNotEqual(0, res, err)
+        self.assertIn('Could not open pyproject file: something-that-must-not-exist.testing', err)
 
     @named_data(*filter(test_data_os_filter, test_data))
     def test_cli_with_file_as_expected(self, infile: str, sv: SchemaVersion, of: OutputFormat) -> None:
@@ -87,6 +109,7 @@ def test_cli_with_file_as_expected(self, infile: str, sv: SchemaVersion, of: Out
                     f'--sv={sv.to_version()}',
                     f'--of={of.name}',
                     '--outfile=-',
+                    f'--pyproject={pyproject_file}',
                     infile])
             err = err.getvalue()
             out = out.getvalue()
@@ -108,6 +131,7 @@ def test_cli_with_stream_as_expected(self, infile: str, sv: SchemaVersion, of: O
                         f'--sv={sv.to_version()}',
                         f'--of={of.name}',
                         '--outfile=-',
+                        # no pyproject for this case
                         '-'])
             err = err.getvalue()
             out = out.getvalue()
