rdflib 2.3.9 → 2.4.0
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.
- package/dist/rdflib.min.js +1 -1
- package/dist/rdflib.min.js.map +1 -1
- package/esm/fetcher.js +9 -9
- package/lib/fetcher.d.ts +1 -0
- package/lib/fetcher.js +9 -9
- package/package.json +1 -1
- package/src/fetcher.ts +22 -12
package/esm/fetcher.js
CHANGED
|
@@ -977,27 +977,27 @@ export default class Fetcher {
|
|
|
977
977
|
linkData(originalUri, rel, uri, why, reverse) {
|
|
978
978
|
if (!uri) return;
|
|
979
979
|
let kb = this.store;
|
|
980
|
-
let predicate;
|
|
981
980
|
// See http://www.w3.org/TR/powder-dr/#httplink for describedby 2008-12-10
|
|
982
981
|
let obj = kb.rdfFactory.namedNode(Uri.join(uri, originalUri.value));
|
|
982
|
+
let predicates;
|
|
983
983
|
if (rel === 'alternate' || rel === 'seeAlso' || rel === 'meta' || rel === 'describedby') {
|
|
984
984
|
if (obj.value === originalUri.value) {
|
|
985
985
|
return;
|
|
986
986
|
}
|
|
987
|
-
predicate
|
|
987
|
+
// Also emit the IANA relation predicate triple (issue #741)
|
|
988
|
+
predicates = [kb.rdfFactory.namedNode(this.ianaLinkRelation(rel)), this.ns.rdfs('seeAlso')];
|
|
988
989
|
} else if (rel === 'type') {
|
|
989
|
-
|
|
990
|
+
predicates = [kb.rdfFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type')];
|
|
990
991
|
} else {
|
|
991
992
|
// See https://www.iana.org/assignments/link-relations/link-relations.xml
|
|
992
993
|
// Alas not yet in RDF yet for each predicate
|
|
993
994
|
// encode space in e.g. rel="shortcut icon"
|
|
994
|
-
|
|
995
|
-
}
|
|
996
|
-
if (reverse) {
|
|
997
|
-
kb.add(obj, predicate, originalUri, why);
|
|
998
|
-
} else {
|
|
999
|
-
kb.add(originalUri, predicate, obj, why);
|
|
995
|
+
predicates = [kb.rdfFactory.namedNode(this.ianaLinkRelation(rel))];
|
|
1000
996
|
}
|
|
997
|
+
kb.addAll(predicates.map(predicate => reverse ? kb.rdfFactory.quad(obj, predicate, originalUri, why) : kb.rdfFactory.quad(originalUri, predicate, obj, why)));
|
|
998
|
+
}
|
|
999
|
+
ianaLinkRelation(rel) {
|
|
1000
|
+
return Uri.join(encodeURIComponent(rel), 'http://www.iana.org/assignments/link-relations/');
|
|
1001
1001
|
}
|
|
1002
1002
|
parseLinkHeader(linkHeader, originalUri, reqNode) {
|
|
1003
1003
|
if (!linkHeader) {
|
package/lib/fetcher.d.ts
CHANGED
|
@@ -340,6 +340,7 @@ export default class Fetcher implements CallbackifyInterface {
|
|
|
340
340
|
original: Quad_Subject;
|
|
341
341
|
} & Options, errorMessage: string, statusCode: StatusValues, response?: ExtendedResponse): Promise<FetchError>;
|
|
342
342
|
linkData(originalUri: NamedNode, rel: string, uri: string, why: Quad_Graph, reverse?: boolean): void;
|
|
343
|
+
private ianaLinkRelation;
|
|
343
344
|
parseLinkHeader(linkHeader: string, originalUri: NamedNode, reqNode: Quad_Graph): void;
|
|
344
345
|
doneFetch(options: {
|
|
345
346
|
req: Quad_Subject;
|
package/lib/fetcher.js
CHANGED
|
@@ -986,27 +986,27 @@ class Fetcher {
|
|
|
986
986
|
linkData(originalUri, rel, uri, why, reverse) {
|
|
987
987
|
if (!uri) return;
|
|
988
988
|
let kb = this.store;
|
|
989
|
-
let predicate;
|
|
990
989
|
// See http://www.w3.org/TR/powder-dr/#httplink for describedby 2008-12-10
|
|
991
990
|
let obj = kb.rdfFactory.namedNode(Uri.join(uri, originalUri.value));
|
|
991
|
+
let predicates;
|
|
992
992
|
if (rel === 'alternate' || rel === 'seeAlso' || rel === 'meta' || rel === 'describedby') {
|
|
993
993
|
if (obj.value === originalUri.value) {
|
|
994
994
|
return;
|
|
995
995
|
}
|
|
996
|
-
predicate
|
|
996
|
+
// Also emit the IANA relation predicate triple (issue #741)
|
|
997
|
+
predicates = [kb.rdfFactory.namedNode(this.ianaLinkRelation(rel)), this.ns.rdfs('seeAlso')];
|
|
997
998
|
} else if (rel === 'type') {
|
|
998
|
-
|
|
999
|
+
predicates = [kb.rdfFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type')];
|
|
999
1000
|
} else {
|
|
1000
1001
|
// See https://www.iana.org/assignments/link-relations/link-relations.xml
|
|
1001
1002
|
// Alas not yet in RDF yet for each predicate
|
|
1002
1003
|
// encode space in e.g. rel="shortcut icon"
|
|
1003
|
-
|
|
1004
|
-
}
|
|
1005
|
-
if (reverse) {
|
|
1006
|
-
kb.add(obj, predicate, originalUri, why);
|
|
1007
|
-
} else {
|
|
1008
|
-
kb.add(originalUri, predicate, obj, why);
|
|
1004
|
+
predicates = [kb.rdfFactory.namedNode(this.ianaLinkRelation(rel))];
|
|
1009
1005
|
}
|
|
1006
|
+
kb.addAll(predicates.map(predicate => reverse ? kb.rdfFactory.quad(obj, predicate, originalUri, why) : kb.rdfFactory.quad(originalUri, predicate, obj, why)));
|
|
1007
|
+
}
|
|
1008
|
+
ianaLinkRelation(rel) {
|
|
1009
|
+
return Uri.join(encodeURIComponent(rel), 'http://www.iana.org/assignments/link-relations/');
|
|
1010
1010
|
}
|
|
1011
1011
|
parseLinkHeader(linkHeader, originalUri, reqNode) {
|
|
1012
1012
|
if (!linkHeader) {
|
package/package.json
CHANGED
package/src/fetcher.ts
CHANGED
|
@@ -1346,30 +1346,40 @@ export default class Fetcher implements CallbackifyInterface {
|
|
|
1346
1346
|
) {
|
|
1347
1347
|
if (!uri) return
|
|
1348
1348
|
let kb = this.store
|
|
1349
|
-
let predicate
|
|
1350
1349
|
// See http://www.w3.org/TR/powder-dr/#httplink for describedby 2008-12-10
|
|
1351
1350
|
let obj = kb.rdfFactory.namedNode(Uri.join(uri, originalUri.value))
|
|
1352
1351
|
|
|
1352
|
+
let predicates: Quad_Predicate[]
|
|
1353
1353
|
if (rel === 'alternate' || rel === 'seeAlso' || rel === 'meta' ||
|
|
1354
1354
|
rel === 'describedby') {
|
|
1355
1355
|
if (obj.value === originalUri.value) { return }
|
|
1356
|
-
predicate
|
|
1356
|
+
// Also emit the IANA relation predicate triple (issue #741)
|
|
1357
|
+
predicates = [
|
|
1358
|
+
kb.rdfFactory.namedNode(this.ianaLinkRelation(rel)),
|
|
1359
|
+
this.ns.rdfs('seeAlso')
|
|
1360
|
+
]
|
|
1357
1361
|
} else if (rel === 'type') {
|
|
1358
|
-
|
|
1362
|
+
predicates = [kb.rdfFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type')]
|
|
1359
1363
|
} else {
|
|
1360
1364
|
// See https://www.iana.org/assignments/link-relations/link-relations.xml
|
|
1361
1365
|
// Alas not yet in RDF yet for each predicate
|
|
1362
1366
|
// encode space in e.g. rel="shortcut icon"
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1367
|
+
predicates = [kb.rdfFactory.namedNode(
|
|
1368
|
+
this.ianaLinkRelation(rel)
|
|
1369
|
+
)]
|
|
1370
|
+
}
|
|
1371
|
+
kb.addAll(
|
|
1372
|
+
predicates.map(predicate =>
|
|
1373
|
+
reverse
|
|
1374
|
+
? kb.rdfFactory.quad(obj, predicate, originalUri, why)
|
|
1375
|
+
: kb.rdfFactory.quad(originalUri, predicate, obj, why)
|
|
1366
1376
|
)
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1377
|
+
)
|
|
1378
|
+
}
|
|
1379
|
+
|
|
1380
|
+
private ianaLinkRelation(rel: string) {
|
|
1381
|
+
return Uri.join(encodeURIComponent(rel),
|
|
1382
|
+
'http://www.iana.org/assignments/link-relations/');
|
|
1373
1383
|
}
|
|
1374
1384
|
|
|
1375
1385
|
parseLinkHeader (
|