例如,以下是我要插入的两个链接节点:
{
"@context": "http://schema.org",
"@id": "some_organization_id",
"@type": "Organization",
"name": "Some Awesome Company",
"image": [
"http://someawesomecompany.com/logo.jpg",
{ "@id": "some_image_id" }
]
}
{
"@context": "http://schema.org",
"@id": "some_image_id",
"@type": "ImageObject",
"contentUrl": "http://instagram.com/blahblah",
"thumbnail: "...",
"caption: "..."
}
注意属性“image”如何包含多个对象,可以是文本或指向其他节点。
Neo4j似乎区分了“属性”和“关系”。在Neo4j或类似的图形数据库中是否存在一种方式,其中关系和属性是同一个东西,并且属性的值可以指向另一个节点?
答案 0 :(得分:2)
在Neo4j中,关系本身就是对象,可以包含自己的属性。
没有什么可以阻止您在属性中保留对另一个节点的引用,但不建议这样做,因为数据库会为您跟踪。
使用Neo4j作为示例,您可以使用图像创建其他节点,只需在组织节点和图像节点之间创建关系。
如果您需要有关特定节点关系的信息,可以通过ReST接口获得大量详细信息,尽管JSON对象中返回的多个属性描述了该节点的关系。
"outgoing_relationships": "http://localhost:7474/db/data/node/1/relationships/out"
"all_typed_relationships": "http://localhost:7474/db/data/node/1/relationships/all/{-list|&|types}"
"outgoing_typed_relationships": "http://localhost:7474/db/data/node/1/relationships/out/{-list|&|types}"
"incoming_relationships": "http://localhost:7474/db/data/node/1/relationships/in"
"create_relationship": "http://localhost:7474/db/data/node/1/relationships"
"all_relationships": "http://localhost:7474/db/data/node/1/relationships/all"
"incoming_typed_relationships": "http://localhost:7474/db/data/node/1/relationships/in/{-list|&|types}
同样,对于关系,JSON文档中有一些属性可以描述连接到关系的起始节点和结束节点。
"start": "http://localhost:7474/db/data/node/2"
"end": "http://localhost:7474/db/data/node/22"
答案 1 :(得分:2)
有些属性本身属于实体,如名称,大小,年龄,描述。
然后存在语义关系,例如知道,拥有,工作在,生活在, 包含,用于捕获实体之间的连接。
对于大多数人来说,这种模型比完全规范化的RDF模型和(可能)JSON-LD更容易理解和处理。
但是根据域名(本体论),它应该是非常简单的(具有常识,域和用例的知识)来决定什么应该成为真正的关系,什么只是一个节点上的属性或属性。