in packages/graph-explorer/src/utils/generatePrefixes.ts [83:133]
export function generatePrefix(url: URL): Omit<PrefixTypeConfig, "__count"> {
const paths = url.pathname.replace(/^\//, "").split("/");
if (paths.length === 1) {
const prefix = prefixFromHost(url.host);
return {
__inferred: true,
uri: url.origin + "/",
prefix,
};
}
if (
paths.length === 2 &&
(paths[0].toLowerCase() === "ontology" ||
paths[0].toLowerCase() === "resource" ||
paths[0].toLowerCase() === "class")
) {
const prefix =
prefixFromHost(url.host) + "-" + paths[0].toLowerCase().substring(0, 1);
const uriChunks = url.href.split("/");
uriChunks.pop();
return {
__inferred: true,
uri: uriChunks.join("/") + "/",
prefix,
};
}
const filteredPaths = paths.filter(
path => !["ontology", "resource", "class"].includes(path.toLowerCase())
);
filteredPaths.pop();
if (filteredPaths.length === 0) {
const prefix = prefixFromHost(url.host);
return {
__inferred: true,
uri: url.origin + "/",
prefix,
};
}
const uriChunks = url.href.split("/");
uriChunks.length = uriChunks.length - 1;
return {
__inferred: true,
uri: uriChunks.join("/") + "/",
prefix: filteredPaths[0].substring(0, 3),
};
}