@faubulous/mentor-rdf 0.2.12 → 0.2.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.
@@ -1,3 +1,4 @@
1
+ import * as n3 from "n3";
1
2
  import { Store } from "./store";
2
3
  /**
3
4
  * A repository for retrieving resources from graphs.
@@ -15,4 +16,14 @@ export declare class ResourceRepository {
15
16
  * @returns true if the URI is a subject, false otherwise.
16
17
  */
17
18
  hasSubject(graphUris: string | string[] | undefined, subjectUri: string, includeInferenced?: boolean): boolean;
19
+ /**
20
+ * Indicate if a given path of predicates exists from a given subject to an optional target.
21
+ * @param graphUris URIs of the graphs to search.
22
+ * @param subjectUri URI of the subject to search for.
23
+ * @param predicatePath An array of predicates to follow.
24
+ * @param objectUri Optional URI of the object to search for.
25
+ * @returns true if the URI is an object, false otherwise.
26
+ */
27
+ hasPredicatePath(graphUris: string | string[] | undefined, subjectUri: string, predicatePath: string[], object?: n3.Term): boolean;
28
+ _hasPredicatePath(graphUris: string | string[] | undefined, quad: any, predicatePath: string[], object?: n3.Term): boolean;
18
29
  }
@@ -29,6 +29,38 @@ class ResourceRepository {
29
29
  }
30
30
  return false;
31
31
  }
32
+ /**
33
+ * Indicate if a given path of predicates exists from a given subject to an optional target.
34
+ * @param graphUris URIs of the graphs to search.
35
+ * @param subjectUri URI of the subject to search for.
36
+ * @param predicatePath An array of predicates to follow.
37
+ * @param objectUri Optional URI of the object to search for.
38
+ * @returns true if the URI is an object, false otherwise.
39
+ */
40
+ hasPredicatePath(graphUris, subjectUri, predicatePath, object) {
41
+ let subject = n3.DataFactory.namedNode(subjectUri);
42
+ let predicate = n3.DataFactory.namedNode(predicatePath[0]);
43
+ let predicateTrail = predicatePath.slice(1);
44
+ for (let q of this.store.match(graphUris, subject, predicate)) {
45
+ if (this._hasPredicatePath(graphUris, q, predicateTrail, object)) {
46
+ return true;
47
+ }
48
+ }
49
+ return false;
50
+ }
51
+ _hasPredicatePath(graphUris, quad, predicatePath, object) {
52
+ if (predicatePath.length == 0) {
53
+ return object == null || object.equals(quad.object);
54
+ }
55
+ let predicate = n3.DataFactory.namedNode(predicatePath[0]);
56
+ let predicateTrail = predicatePath.slice(1);
57
+ for (let q of this.store.match(graphUris, quad.object, predicate)) {
58
+ if (this._hasPredicatePath(graphUris, q, predicateTrail, object)) {
59
+ return true;
60
+ }
61
+ }
62
+ return false;
63
+ }
32
64
  }
33
65
  exports.ResourceRepository = ResourceRepository;
34
66
  //# sourceMappingURL=resource-repository.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resource-repository.js","sourceRoot":"","sources":["../../src/rdf/resource-repository.ts"],"names":[],"mappings":";;;;AAAA,+CAAyB;AAGzB;;GAEG;AACH,MAAa,kBAAkB;IAM3B,YAAY,KAAY;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,SAAwC,EAAE,UAAkB,EAAE,oBAA6B,KAAK;;QACvG,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAE/C,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE;YAC1C,iFAAiF;YACjF,sDAAsD;YACtD,IAAI,CAAC,iBAAiB,KAAI,MAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,0CAAE,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA,EAAE;gBAC/E,SAAS;aACZ;YAED,OAAO,IAAI,CAAC;SACf;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ;AA/BD,gDA+BC"}
1
+ {"version":3,"file":"resource-repository.js","sourceRoot":"","sources":["../../src/rdf/resource-repository.ts"],"names":[],"mappings":";;;;AAAA,+CAAyB;AAGzB;;GAEG;AACH,MAAa,kBAAkB;IAM3B,YAAY,KAAY;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,SAAwC,EAAE,UAAkB,EAAE,oBAA6B,KAAK;;QACvG,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAE/C,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE;YAC1C,iFAAiF;YACjF,sDAAsD;YACtD,IAAI,CAAC,iBAAiB,KAAI,MAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,0CAAE,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA,EAAE;gBAC/E,SAAS;aACZ;YAED,OAAO,IAAI,CAAC;SACf;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;;;;;;OAOG;IACH,gBAAgB,CAAC,SAAwC,EAAE,UAAkB,EAAE,aAAuB,EAAE,MAAgB;QACpH,IAAI,OAAO,GAAoB,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAEpE,IAAI,SAAS,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,IAAI,cAAc,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAE5C,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE;YAC3D,IAAI,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE;gBAC9D,OAAO,IAAI,CAAC;aACf;SACJ;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,iBAAiB,CAAC,SAAwC,EAAE,IAAS,EAAE,aAAuB,EAAE,MAAgB;QAC5G,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC,EAAE;YAC3B,OAAO,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACvD;QAED,IAAI,SAAS,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,IAAI,cAAc,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAE5C,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;YAC/D,IAAI,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE;gBAC9D,OAAO,IAAI,CAAC;aACf;SACJ;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ;AAvED,gDAuEC"}
package/package.json CHANGED
@@ -10,7 +10,7 @@
10
10
  "ontology",
11
11
  "vocabulary"
12
12
  ],
13
- "version": "0.2.12",
13
+ "version": "0.2.13",
14
14
  "private": false,
15
15
  "author": {
16
16
  "name": "Sebastian Faubel"