cayley是一個(gè)流行的圖形數(shù)據(jù)庫,它可以用于存儲(chǔ)和查詢RDF和其他圖形數(shù)據(jù)。它支持多種查詢語言,包括SPARQL和MQL,但是我們這篇文章要討論的是如何使用json-ld查詢Cayley圖形數(shù)據(jù)庫。
// 初始化Cayley數(shù)據(jù)庫連接 const cayley = new Cayley({ protocol: "http", host: "localhost", port: "64210", }); // 插入一些數(shù)據(jù) cayley.write([ { subject: "article1", predicate: "hasAuthor", object: "person1" }, { subject: "article1", predicate: "hasTitle", object: "The History of Cayley" }, { subject: "person1", predicate: "hasName", object: "Arthur Cayley" }, ]); // 使用json-ld查詢數(shù)據(jù) const query = { "@context": { "hasAuthor": "http://example.org/hasAuthor", "hasTitle": "http://example.org/hasTitle", "hasName": "http://example.org/hasName", }, "@type": "ItemList", "itemListElement": [ { "@type": "ListItem", "position": 1, "item": { "@type": "Article", "name": { "@id": "hasTitle" }, "author": { "@id": "hasAuthor", "@type": "Person", "name": { "@id": "hasName" } }, }, }, ], }; // 獲取結(jié)果 const result = await cayley.query(query); console.log(JSON.stringify(result));
在上面的代碼中,我們首先初始化了Cayley數(shù)據(jù)庫連接并插入了一些數(shù)據(jù)。然后,我們使用json-ld查詢圖形數(shù)據(jù)庫中的數(shù)據(jù)。我們定義了查詢中的@context以將謂詞映射到URI中。然后我們定義了一個(gè)類型為ItemList的查詢,并指定了要查詢的元素和它們的屬性。在這個(gè)例子中,我們想獲取文章的標(biāo)題和作者的名字。
最后,我們獲取了結(jié)果并將其以字符串形式打印出來。結(jié)果是符合json-ld規(guī)范的。