Qualified Name
technology.code.qualified_namesince finetype v0.6.36A dotted, reverse-DNS-style fully-qualified identifier: three or more dot-separated identifier segments naming a namespaced code symbol (Java/.NET package or class, config key, module path).
Try a value
Qualified Name's rule accepts it.
Reads it as com.google.javascript.jscomp.Compiler
Worked samples
DuckDB 1.5.5 · finetype 0.6.66
| Value | As VARCHAR | leaf | root |
|---|---|---|---|
| com.google.javascript.jscomp.Compiler | com.google.javascript.jscomp.Compiler | Compiler | com |
| org.apache.commons.math.fraction.Fraction | org.apache.commons.math.fraction.Fraction | Fraction | org |
| Avalonia.UnitTests.Controls.ContentControl | Avalonia.UnitTests.Controls.ContentControl | ContentControl | Avalonia |
Shape
^[A-Za-z_][A-Za-z0-9_]*(\.[A-Za-z_][A-Za-z0-9_]*){2,}$| Value | Length | Shape |
|---|---|---|
| com.google.javascript.jscomp.Compiler | 37 | matches |
| org.apache.commons.math.fraction.Fraction | 41 | matches |
| Avalonia.UnitTests.Controls.ContentControl | 42 | matches |
| com-google.javascript.jscomp.Compiler | 37 | rejected: separator swapped |
Background
Origin
The Java Language Specification says names in programs are either simple, consisting of a single identifier, or qualified, consisting of a sequence of identifiers separated by "." tokens.[1] Under the Java Language Specification, the fully qualified name of a top level class declared in a named package is the package's fully qualified name, followed by ".", followed by the class's simple name.[1] The Java Language Specification builds the fully qualified name of a subpackage the same way, from the containing package's fully qualified name, a "." and the subpackage's simple name.[1]
The Java Language Specification suggests forming a unique package name by reversing an Internet domain name, component by component, so that oracle.com becomes the prefix com.oracle.[1] The Java Language Specification gives com.nighthacks.scrabble.dictionary and edu.cmu.cs.bovik.cheese as examples of unique package names.[1] The Java Language Specification describes the reversed-domain convention as a way to piggyback package naming on an existing, widely known unique name registry instead of creating a separate registry for package names.[1] The Java Language Specification states that a package's name is not meant to imply where the package is stored on the Internet.[1] The Java Language Specification suggests converting a hyphen in a domain name into an underscore when forming a package name.[1]
Microsoft's Framework Design Guidelines give the template <Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>] for naming .NET namespaces.[2] Microsoft's Framework Design Guidelines advise prefixing namespace names with a company name to prevent namespaces from different companies having the same name.[2] Microsoft's Framework Design Guidelines advise PascalCasing, with namespace components separated by periods, as in Microsoft.Office.PowerPoint.[2] Python's glossary defines a qualified name as a dotted name showing the path from a module's global scope to a class, function or method defined in that module, as defined in PEP 3155.[3] Python's glossary gives email.mime.text as an example of a module's fully qualified name.[3]
FineType's registry describes this type as three or more dot-separated identifier segments naming a namespaced code symbol, such as a Java or .NET package or class, a config key or a module path.[4] FineType's registry validates the type with the pattern ^[A-Za-z_][A-Za-z0-9_]*(\.[A-Za-z_][A-Za-z0-9_]*){2,}$.[4]
Use
Apache Maven's naming conventions say each groupId should follow Java's package name rules, starting with a reversed domain name you control.[5] Apache Maven's naming conventions give org.apache.maven, org.apache.commons and com.google.guava as example groupIds.[5] Apache Maven's naming conventions note that many legacy projects use single-word group IDs instead.[5]
The Java Language Specification says the binary name of a member class consists of the binary name of its enclosing class, followed by $, followed by the member's simple name.[6] The Java Language Specification says the binary name of an anonymous class is its enclosing class's binary name followed by $ and a non-empty sequence of digits.[6]
Microsoft's documentation for Type.FullName says the fully qualified name includes the type's namespace but not its assembly.[7]
Sources
- [1]Chapter 6. Namesstandard
- [2]Names of Namespaces - Framework Design Guidelinesdocumentation
- [3]Glossarydocumentation
- [4]definitions_technology.yamlFineType
- [5]Naming conventions of Maven coordinates (groupId, artifactId, and version)documentation
- [6]Chapter 13. Binary Compatibilitystandard
- [7]Type.FullName Property (System)documentation
Detection notes
New in v0.6.36 (spec 2026-06-19-plain-text-type-discovery). 1,677 distinct corpus datasets, blind-panel confidence 0.79 (unanimous "java/dotted FQN"). Pattern fires on ZERO multi-word prose. Boundary caveat: structurally overlaps technology.internet.hostname (www.x.com); the disambiguating signal is a CamelCase / non-TLD leaf segment — a Sharpen-precedence decision for the retrain, not the validator.
Use it
$ finetype infer -i "com.google.javascript.jscomp.Compiler" --mode column
→ technology.code.qualified_name
SELECT ft_infer('com.google.javascript.jscomp.Compiler');
-- → 'technology.code.qualified_name'CAST({col} AS VARCHAR)Schema
https://meridian.online/schemas/technology.code.qualified_name · Frictionless type string
finetype taxonomy technology.code.qualified_name -o json-schema