如何知道 RDF 图是否精益?
How to know if an RDF graph is lean?
我刚刚发现了 lean graph 的定义,我并不总是知道如何定义它,如果有人可以向我解释一下这个图是否精简。
G1 :
_:X foaf:knows ex:bob
_:X foaf:knows _:Y
I think this is lean !
G2:
_:X foaf:knows ex:bob
_:X foaf:knows _:X
G2 isn't lean !
G3
_:X foaf:knows ex:bob
I don't know XD
G4
_:X foaf:knows _:X
And I don't know XD
提前致谢。
https://www.w3.org/TR/rdf11-mt/#dfn-lean
中的示例
For example, the graph
ex:a ex:p _:x .
_:y ex:p _:x .
is not lean, but
ex:a ex:p _:x .
_:x ex:p _:x .
is lean. Ground graphs are lean.
在问题示例中主语和宾语被翻转,否则 G1 和 G2 是 "RDF 1.1 Semantics" 个示例。
G1 不瘦。
你可以删除“_:X foaf:knows _:Y”(或者删除“_:y ex:p _:x”)——那个三元组没有添加新的信息。我们从第一个三元组“_:X foaf:knows ex:bob”知道“_:X 知道一些事情”,这就是第二个三元组所说的全部内容。
图表 G3 和 G4 是精益的。
如果我们有 G5:_:X foaf:knows _:Y
那么 G5 是精益的,但 G3 merge G5 不是精益的。
G2 是精简的,因为三元组“_:X foaf:knows _:X”添加了一些信息,即有一些资源知道自己。第一个三元组没有这么说。
我将使用来自
w3 spec.
定义
A name is any IRI or literal.
A (proper) subgraph of an RDF graph is a (proper) subset of the triples in the graph.
Suppose that M is a functional mapping from a set of blank nodes to some set
of literals, blank nodes and IRIs. Any graph obtained from a graph G by
replacing some or all of the blank nodes N in G by M(N) is an instance of G.
A proper instance of a graph is an instance in which a blank node has been
replaced by a name, or two blank nodes in the graph have been mapped into the
same node in the instance.
An RDF graph is lean if it has no instance which is a proper subgraph of
itself.
这是图表 G1
:
ex:a ex:p _:x .
_:y ex:p _:x .
这里是G2
:
ex:a ex:p _:x .
_:x ex:p _:x .
声明 1:G1
是 瘦身
证明:
定义映射M
:
_:y -> ex:a
那么M(G1)
就是:
ex:a ex:p _:x .
根据 M
的定义,这是 G1
的 实例 ,显然是一个合适的实例
G1
的子集,因此也是一个真子图。
声明 2:G2
不瘦
证明:
我们必须证明 G2
的任何实例映射都会产生一个不是
G2
的真子图。让 M
成为任何这样的映射。 M
必须将 _:x
映射到
东西(_:x
除外)。然后下面的三元组将在 M(G2)
:
ex:a ex:p M(_:x)
这个三元组不在 G2
中,因此这个实例不是正确的
G2
的子图。由于没有映射可以创建 G2
的实例,即
G2
的一个真子图也是 G2
是 lean.
Remark 如果 lean 的定义是:
似乎会更清晰
An RDF graph is lean if it has no **proper** instance which is a proper subgraph of itself.
这将消除我对 M
将 _:x
映射到另一个任意空白节点时的含义的任何疑问。这些定义使一切仍然正常,但 lean 的更强定义对我来说似乎更好。
我刚刚发现了 lean graph 的定义,我并不总是知道如何定义它,如果有人可以向我解释一下这个图是否精简。
G1 :
_:X foaf:knows ex:bob
_:X foaf:knows _:Y
I think this is lean !
G2:
_:X foaf:knows ex:bob
_:X foaf:knows _:X
G2 isn't lean !
G3
_:X foaf:knows ex:bob
I don't know XD
G4
_:X foaf:knows _:X
And I don't know XD
提前致谢。
https://www.w3.org/TR/rdf11-mt/#dfn-lean
中的示例For example, the graph
ex:a ex:p _:x .
_:y ex:p _:x .is not lean, but
ex:a ex:p _:x .
_:x ex:p _:x .is lean. Ground graphs are lean.
在问题示例中主语和宾语被翻转,否则 G1 和 G2 是 "RDF 1.1 Semantics" 个示例。
G1 不瘦。
你可以删除“_:X foaf:knows _:Y”(或者删除“_:y ex:p _:x”)——那个三元组没有添加新的信息。我们从第一个三元组“_:X foaf:knows ex:bob”知道“_:X 知道一些事情”,这就是第二个三元组所说的全部内容。
图表 G3 和 G4 是精益的。
如果我们有 G5:_:X foaf:knows _:Y
那么 G5 是精益的,但 G3 merge G5 不是精益的。
G2 是精简的,因为三元组“_:X foaf:knows _:X”添加了一些信息,即有一些资源知道自己。第一个三元组没有这么说。
我将使用来自 w3 spec.
定义
A name is any IRI or literal.
A (proper) subgraph of an RDF graph is a (proper) subset of the triples in the graph.
Suppose that M is a functional mapping from a set of blank nodes to some set of literals, blank nodes and IRIs. Any graph obtained from a graph G by replacing some or all of the blank nodes N in G by M(N) is an instance of G.
A proper instance of a graph is an instance in which a blank node has been replaced by a name, or two blank nodes in the graph have been mapped into the same node in the instance.
An RDF graph is lean if it has no instance which is a proper subgraph of itself.
这是图表 G1
:
ex:a ex:p _:x .
_:y ex:p _:x .
这里是G2
:
ex:a ex:p _:x .
_:x ex:p _:x .
声明 1:G1
是 瘦身
证明:
定义映射M
:
_:y -> ex:a
那么M(G1)
就是:
ex:a ex:p _:x .
根据 M
的定义,这是 G1
的 实例 ,显然是一个合适的实例
G1
的子集,因此也是一个真子图。
声明 2:G2
不瘦
证明:
我们必须证明 G2
的任何实例映射都会产生一个不是
G2
的真子图。让 M
成为任何这样的映射。 M
必须将 _:x
映射到
东西(_:x
除外)。然后下面的三元组将在 M(G2)
:
ex:a ex:p M(_:x)
这个三元组不在 G2
中,因此这个实例不是正确的
G2
的子图。由于没有映射可以创建 G2
的实例,即
G2
的一个真子图也是 G2
是 lean.
Remark 如果 lean 的定义是:
似乎会更清晰An RDF graph is lean if it has no **proper** instance which is a proper subgraph of itself.
这将消除我对 M
将 _:x
映射到另一个任意空白节点时的含义的任何疑问。这些定义使一切仍然正常,但 lean 的更强定义对我来说似乎更好。