我想像下面这样建模合作伙伴关系,我用标记属性图的格式表示。
我想用RDF语言来表达上面的图形,尤其是我想了解我是否能表达“loves”边的标签(这是文章/字母的URI)。
我不熟悉RDF,我知道RDF可以很容易地表达LPG中的节点属性,但是可以方便地表达边缘属性吗?
这个问题的背景是:我想使用RDF(而不是Gremlin)的原因是,从长远来看,我想添加一些推理能力。
进一步添加的问题:如果我们选择RDF模型来表示上述LPG,用简单的英语来说,我想用SPARQL查询来回答以下问题:
SPARQL语句查询出loveletters.com/123
有多复杂?
ANZograp支持RDF*/SPARQL*,因此您实际上可以使用简洁、最直观的格式来表示数据并进行查询。
insert data {
:Bob a :Person; <name> "Bob"; <state> "CA" .
:Mary a :Person; <name> "Mary"; <state> "CA" .
:Bob <loves> :Mary .
<< :Bob <loves> :Mary >> <reason> <http://loveletters.com/123> .
}
现在查询:
select ?who ?whom ?reason
where {
?p1 a :Person ; <name> ?who .
?p2 a :Person ; <name> ?whom .
<< ?p1 <loves> ?p2 >> <reason> ?reason .
}
结果:
who | whom | reason
-----+------+----------------------------
Bob | Mary | http://loveletters.com/123
1 rows
RDF不支持边缘属性,所以简单的回答是不。但是当然有方法在RDF中建模这种东西。
如果我们不想注释边缘,鲍勃和玛丽之间的关系将只是一个三元组,鲍勃是主体,玛丽是客体,还有“爱”
PREFIX : <http://example.org/ontology#>
PREFIX person: <http://example.org/data/person/>
person:Bob :loves person:Mary.
那么我们如何添加注释呢?
RDF有一个名为“RDF具体化”的内置解决方案。它允许对声明进行html" target="_blank">声明:
PREFIX : <http://example.org/ontology#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX person: <http://example.org/data/person/>
PREFIX statement: <http://example.org/data/statement/>
person:Bob :loves person:Mary.
statement:1 a rdf:Statement;
rdf:subject person:Bob;
rdf:predicate :loves;
rdf:object person:Mary;
:reason <http://loveletters.com/123>.
所以我们说有一个以鲍勃为主语,玛丽为宾语,“爱”的陈述
另一种方法是改变模式。而不是考虑“爱”
PREFIX relationship: <http://example.org/data/relationship/>
relationship:1 a :LovesRelationship;
:who person:Bob;
:whom person:Mary;
:reason <http://loveletters.com/123>.
所以在我们的模型中我们创建了一个类: LovesAbby
,表示“爱”,以及属性: who
和: who
来表示双方。这种方法的缺点是图结构不再直接表示我们的社交网络。所以在查询两个人是如何关联的时候,我们总是要经过那些关系实体,而不仅仅是处理连接人们的边。
有一个名为RDF*的提案很好地解决了这个问题。(有时被称为RDR或物化正确完成。)RDF*/RDR添加了新语法,允许三元组成为其他三元组的主题:
<<person:Bob :loves person:Mary>>
:reason <http://loveletters.com/123>.
缺点是它是非标准的,到目前为止只有少数系统(Blazegraph、AnzoGraph和Jena的扩展)支持它。截至2019年4月,海王星不在其中。
这在基本RDF版本以及选项1和选项3中都很容易做到:
ASK { person:Bob :loves ?anyone }
选项2需要不同的查询,因为模型已更改:
ASK {
?rel a :LovesRelationship;
:who person:Bob.
}
这将匹配任何:LovesRelationship
,其中:who
属性是Bob,而不管:who
和:reason
属性。
选项1,RDF物化:
SELECT ?whom ?why {
?statement a rdf:Statement;
rdf:subject person:Bob;
rdf:predicate :loves;
rdf:object ?whom;
:reason ?why.
}
我发现这个查询不是很直观,因为它谈论的是RDF语句,而我们真正感兴趣的是人和关系。
选项2,关系建模为实体:
SELECT ?whom ?why {
?rel a :LovesRelationship;
:who person:Bob;
:whom ?whom;
:reason ?why.
}
这在我看来更好;一旦你接受了关系是这个模型中的实体,它就会变得相当直观。
选项3,RDF*,使用SPARQL*:
SELECT ?whom ?why {
<<person:Bob :loves ?whom>>
:reason ?why.
}
这是简洁直观的,所以很遗憾我们目前不能在大多数SPARQL系统中使用它!
我有一个组件文件夹。它们用一个文件公开,如下所示: 我有一个名为Status的JSX组件,如下所示: 它的任务是加载命名组件的行。 然后我有一个名为的组件,看起来像这样: 从'react'导入React 通过
我们知道neo4j和Titan使用属性图作为他们的数据模型,这比RDF更复杂、更灵活。然而,我的团队正在构建一个名为gStore的图形数据库,它基于RDF数据集。gStore不支持N-Quads或属性图,因为它不能处理除了标签之外还有属性的边。 下面是一个RDF数据集:
本文向大家介绍图的属性,包括了图的属性的使用技巧和注意事项,需要的朋友参考一下 图具有各种特性,取决于图的结构,这些特性可用于图的表征。这些属性是在与图论领域相关的特定术语中定义的。在本章中,我们将讨论所有图形中共有的一些基本属性。 连通图的半径 来自所有顶点的最小偏心率被视为图G的半径。将顶点到所有其他顶点之间的所有最大距离中的最小值视为图G的半径。 表示法-r(G) 从图中一个顶点的所有偏心率
属性图是一个有向多重图,它带有连接到每个顶点和边的用户定义的对象。 有向多重图中多个并行(parallel)的边共享相同的源和目的地顶点。支持并行边的能力简化了建模场景,这个场景中,相同的顶点存在多种关系(例如co-worker和friend)。每个顶点由一个 唯一的64位长的标识符(VertexID)作为key。GraphX并没有对顶点标识强加任何排序。同样,顶点拥有相应的源和目的顶点标识符。
问题内容: 如果我有以下简单代码段: 如您从小提琴中看到的:http : //jsfiddle.net/basarat/czVPG/,该按钮不可单击,并且ng- click(仅是一个jquery )不会执行。但是,它确实为锚标记执行。 是否因为禁用不是锚标记的有效属性? 如果是这样,为什么在没有按钮的情况下仍会触发dom click事件? 问题答案: 禁用不是锚标记的有效属性。来源:http :
在HTML文档中,我有以下标记 我正在使用JSoup,希望提取中包含的URL,该URL由标识。在阅读了下面的文章之后 > JSoup解析标记中的数据 我想出了这段代码 但这些都是印刷品 我尝试过其他的变化,但都没有成功。我要么什么也没打印出来,要么最后出现了空指针异常。 我不确定如何提取