@openhps/rdf 0.1.10 → 0.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/.eslintrc.js +39 -0
  2. package/.prettierrc.js +8 -0
  3. package/commitlint.config.js +1 -0
  4. package/dist/cjs/rdf/RDFSerializer.d.ts +2 -1
  5. package/dist/cjs/rdf/RDFSerializer.js +47 -0
  6. package/dist/cjs/rdf/RDFSerializer.js.map +1 -1
  7. package/dist/cjs/rdf/SerializableNamedNode.d.ts +0 -2
  8. package/dist/cjs/rdf/SerializableNamedNode.js +1 -8
  9. package/dist/cjs/rdf/SerializableNamedNode.js.map +1 -1
  10. package/dist/cjs/rdf/types.d.ts +10 -0
  11. package/dist/esm/rdf/RDFSerializer.d.ts +2 -1
  12. package/dist/esm/rdf/RDFSerializer.js +47 -0
  13. package/dist/esm/rdf/RDFSerializer.js.map +1 -1
  14. package/dist/esm/rdf/SerializableNamedNode.d.ts +0 -2
  15. package/dist/esm/rdf/SerializableNamedNode.js +1 -8
  16. package/dist/esm/rdf/SerializableNamedNode.js.map +1 -1
  17. package/dist/esm/rdf/types.d.ts +10 -0
  18. package/dist/types/rdf/RDFSerializer.d.ts +2 -1
  19. package/dist/types/rdf/SerializableNamedNode.d.ts +0 -2
  20. package/dist/types/rdf/types.d.ts +10 -0
  21. package/dist/web/openhps-rdf.all.es.js +57 -17
  22. package/dist/web/openhps-rdf.all.es.js.map +1 -1
  23. package/dist/web/openhps-rdf.all.es.min.js +1 -1
  24. package/dist/web/openhps-rdf.all.es.min.js.map +1 -1
  25. package/dist/web/openhps-rdf.all.js +57 -17
  26. package/dist/web/openhps-rdf.all.js.map +1 -1
  27. package/dist/web/openhps-rdf.all.min.js +1 -1
  28. package/dist/web/openhps-rdf.all.min.js.map +1 -1
  29. package/dist/web/openhps-rdf.serialization.es.js +60 -18
  30. package/dist/web/openhps-rdf.serialization.es.js.map +1 -1
  31. package/dist/web/openhps-rdf.serialization.es.min.js +1 -1
  32. package/dist/web/openhps-rdf.serialization.es.min.js.map +1 -1
  33. package/dist/web/openhps-rdf.serialization.js +60 -18
  34. package/dist/web/openhps-rdf.serialization.js.map +1 -1
  35. package/dist/web/openhps-rdf.serialization.min.js +1 -1
  36. package/dist/web/openhps-rdf.serialization.min.js.map +1 -1
  37. package/dist/web/openhps-rdf.sparql.es.js +56 -9
  38. package/dist/web/openhps-rdf.sparql.es.js.map +1 -1
  39. package/dist/web/openhps-rdf.sparql.es.min.js +1 -1
  40. package/dist/web/openhps-rdf.sparql.es.min.js.map +1 -1
  41. package/dist/web/openhps-rdf.sparql.js +56 -9
  42. package/dist/web/openhps-rdf.sparql.js.map +1 -1
  43. package/dist/web/openhps-rdf.sparql.min.js +1 -1
  44. package/dist/web/openhps-rdf.sparql.min.js.map +1 -1
  45. package/package.json +4 -2
  46. package/serialization.d.ts +1 -0
  47. package/serialization.js +1 -0
  48. package/src/rdf/RDFSerializer.ts +53 -1
  49. package/src/rdf/SerializableNamedNode.ts +3 -7
  50. package/src/rdf/types.ts +13 -0
  51. package/vocab.d.ts +1 -0
  52. package/vocab.js +1 -0
  53. package/webpack.config.js +87 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openhps/rdf",
3
- "version": "0.1.10",
3
+ "version": "0.1.13",
4
4
  "description": "Open Hybrid Positioning System",
5
5
  "author": "Maxim Van de Wynckel",
6
6
  "license": "Apache-2.0",
@@ -41,7 +41,9 @@
41
41
  "jsdelivr": "dist/web/openhps-rdf.min.js",
42
42
  "files": [
43
43
  "dist/**/*",
44
- "src/**/*"
44
+ "src/**/*",
45
+ "*.js",
46
+ "*.d.ts"
45
47
  ],
46
48
  "scripts": {
47
49
  "test": "mocha --config test/.mocharc.json",
@@ -0,0 +1 @@
1
+ export * from './dist/types/index.serialization';
@@ -0,0 +1 @@
1
+ export * from './dist/esm/index.browser';
@@ -8,7 +8,7 @@ import {
8
8
  } from '@openhps/core';
9
9
  import { InternalRDFSerializer } from './InternalRDFSerializer';
10
10
  import { InternalRDFDeserializer } from './InternalRDFDeserializer';
11
- import { IriString, Thing } from './types';
11
+ import { IriString, Thing, Subject } from './types';
12
12
  import * as N3 from 'n3';
13
13
  import { WriterOptions as N3WriterOptions } from 'n3';
14
14
  import { namespaces } from '../namespaces';
@@ -112,6 +112,58 @@ export class RDFSerializer extends DataSerializer {
112
112
  return this.deserialize(thing);
113
113
  }
114
114
 
115
+ static serializeToSubjects<T>(data: T, baseUri?: IriString): Subject[] {
116
+ const quads: N3.Quad[] = RDFSerializer.serializeToQuads(data, baseUri);
117
+ const store = new N3.Store(quads);
118
+ const quadSubjects: N3.Quad_Subject[] = store.getSubjects(null, null, null);
119
+ /**
120
+ *
121
+ * @param quadSubject
122
+ */
123
+ function serializePredicates(quadSubject: N3.Quad_Subject) {
124
+ const quadPredicates: N3.Quad_Predicate[] = store.getPredicates(quadSubject, null, null);
125
+ return quadPredicates
126
+ .map((quadPredicate) => {
127
+ const quadObjects: N3.Quad_Object[] = store.getObjects(quadSubject, quadPredicate, null);
128
+ const literals: Record<string, string[]> = quadObjects
129
+ .filter((obj) => obj instanceof N3.Literal)
130
+ .filter((obj: N3.Literal) => obj.language === '')
131
+ .map((obj: N3.Literal) => ({ [obj.datatype.value]: [obj.value] }))
132
+ .reduce((a, b) => ({ ...a, ...b }), {});
133
+ const langStrings: Record<string, string[]> = quadObjects
134
+ .filter((obj) => obj instanceof N3.Literal)
135
+ .filter((obj: N3.Literal) => obj.language !== '')
136
+ .map((obj: N3.Literal) => ({ [obj.language]: [obj.value] }))
137
+ .reduce((a, b) => ({ ...a, ...b }), {});
138
+ const namedNodes: Array<string> = quadObjects
139
+ .filter((obj) => obj instanceof N3.NamedNode)
140
+ .map((obj) => obj.value);
141
+ const blankNodes: Array<any | string> = quadObjects
142
+ .filter((obj) => obj instanceof N3.BlankNode)
143
+ .map((obj: N3.BlankNode) => serializePredicates(N3.DataFactory.blankNode(obj.value)));
144
+ return {
145
+ [quadPredicate.value]: {
146
+ namedNodes,
147
+ blankNodes,
148
+ literals,
149
+ langStrings,
150
+ },
151
+ };
152
+ })
153
+ .reduce((a, b) => ({ ...a, ...b }), {});
154
+ }
155
+ const subjects: Subject[] = quadSubjects
156
+ .filter((quadSubject) => quadSubject instanceof N3.NamedNode)
157
+ .map((quadSubject) => {
158
+ return {
159
+ type: 'Subject',
160
+ url: quadSubject.value,
161
+ predicates: serializePredicates(quadSubject),
162
+ };
163
+ });
164
+ return subjects;
165
+ }
166
+
115
167
  static serializeToQuads<T>(data: T, baseUri?: IriString): N3.Quad[] {
116
168
  const thing =
117
169
  (data as any)['predicates'] !== undefined ? (data as unknown as Thing) : this.serialize(data, baseUri);
@@ -1,6 +1,6 @@
1
1
  import { SerializableObject } from '@openhps/core';
2
2
  import * as N3 from 'n3';
3
- import { IriString, Thing } from './types';
3
+ import { Thing } from './types';
4
4
 
5
5
  @SerializableObject({
6
6
  rdf: {
@@ -10,12 +10,8 @@ import { IriString, Thing } from './types';
10
10
  };
11
11
  },
12
12
  deserializer: (thing: Thing) => {
13
- return new SerializableNamedNode(thing.value as IriString);
13
+ return new SerializableNamedNode(thing.value);
14
14
  },
15
15
  },
16
16
  })
17
- export class SerializableNamedNode extends N3.NamedNode {
18
- constructor(uri: IriString) {
19
- super(uri);
20
- }
21
- }
17
+ export class SerializableNamedNode extends N3.NamedNode {}
package/src/rdf/types.ts CHANGED
@@ -8,6 +8,19 @@ export type Thing = {
8
8
  value: string;
9
9
  predicates?: Record<string, (Quad_Object | Thing)[]>;
10
10
  };
11
+ export type Subject = {
12
+ type: 'Subject';
13
+ url: string;
14
+ predicates: Record<
15
+ IriString,
16
+ Partial<{
17
+ literals: Record<string, string[]>;
18
+ langStrings: Record<LocaleString, string[]>;
19
+ namedNodes: Array<string>;
20
+ blankNodes: Array<any | string>;
21
+ }>
22
+ >;
23
+ };
11
24
  export type LocaleString = 'en';
12
25
 
13
26
  export interface RDFSerializerConfig extends DataSerializerConfig {
package/vocab.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './dist/types/index.vocab';
package/vocab.js ADDED
@@ -0,0 +1 @@
1
+ export * from './dist/esm/index.vocab';
@@ -0,0 +1,87 @@
1
+ const TerserPlugin = require('terser-webpack-plugin');
2
+ const path = require('path');
3
+ const pkg = require("./package.json");
4
+
5
+ const LIBRARY_NAME = pkg.name;
6
+ const PROJECT_NAME = pkg.name.replace("@", "").replace("/", "-");
7
+
8
+ const defaultConfig = env => ({
9
+ mode: env.prod ? "production" : "development",
10
+ devtool: 'source-map',
11
+ resolve: {
12
+ alias: {
13
+ typescript: false,
14
+ },
15
+ fallback: {
16
+ path: false,
17
+ fs: false,
18
+ os: false,
19
+ util: false,
20
+ stream: false,
21
+ url: false,
22
+ assert: false,
23
+ tls: false,
24
+ net: false,
25
+ buffer: require.resolve("buffer"),
26
+ }
27
+ },
28
+ optimization: {
29
+ minimize: env.prod,
30
+ minimizer: [
31
+ new TerserPlugin({
32
+ parallel: true,
33
+ terserOptions: {
34
+ keep_classnames: true,
35
+ sourceMap: true,
36
+ }
37
+ })
38
+ ],
39
+ portableRecords: true,
40
+ usedExports: true,
41
+ },
42
+ performance: {
43
+ hints: false,
44
+ maxEntrypointSize: 300000,
45
+ maxAssetSize: 300000
46
+ },
47
+ });
48
+
49
+ const bundle = (env, module, entry = 'index', suffix = '') => ({
50
+ name: PROJECT_NAME,
51
+ entry: `./dist/esm/${entry}.js`,
52
+ output: {
53
+ path: path.resolve(__dirname, 'dist'),
54
+ filename: `web/${PROJECT_NAME}${suffix}${module ? ".es" : ""}${env.prod ? ".min" : ""}.js`,
55
+ library: module ? undefined : ['OpenHPS', LIBRARY_NAME.substring(LIBRARY_NAME.indexOf("/") + 1)],
56
+ libraryTarget: module ? "module" : "umd",
57
+ umdNamedDefine: !module,
58
+ globalObject: module ? undefined : `(typeof self !== 'undefined' ? self : this)`,
59
+ environment: { module },
60
+ },
61
+ experiments: {
62
+ outputModule: module,
63
+ },
64
+ externalsType: module ? "module" : undefined,
65
+ externals: {
66
+ '@openhps/core': module ? "./openhps-core.es" + (env.prod ? ".min" : "") + ".js" : {
67
+ commonjs: '@openhps/core',
68
+ commonjs2: '@openhps/core',
69
+ amd: 'core',
70
+ root: ['OpenHPS', 'core']
71
+ }
72
+ },
73
+ devtool: 'source-map',
74
+ plugins: [],
75
+ ...defaultConfig(env)
76
+ });
77
+
78
+ module.exports = env => [
79
+ bundle(env, true, 'index', '.all'),
80
+ bundle(env, false, 'index', '.all'),
81
+ bundle(env, true, 'index.sparql', '.sparql'),
82
+ bundle(env, false, 'index.sparql', '.sparql'),
83
+ bundle(env, true, 'index.serialization', '.serialization'),
84
+ bundle(env, false, 'index.serialization', '.serialization'),
85
+ bundle(env, true, 'index.vocab', '.vocab'),
86
+ bundle(env, false, 'index.vocab', '.vocab'),
87
+ ];