- From: Andy Seaborne <andy@apache.org>
- Date: Fri, 03 Jan 2014 09:55:57 +0000
- To: public-propertygraphs@w3.org
Gregg looked at using RDF to encode property graphs (PG), using bnode
properties for links with attributes. [1]
What about other way round - mapping RDF to PG?
In the PropertyGraphs data model there are vertexes, links (edges,
relationalships) and attributes (named values for a vertex and edges).
This is similar to XML (elements and attributes) and OWL (object
properties and data type properties).
2 features of RDF make the mapping from RDF into PG easy:
1/ Literals only appear in the object position.
2/ Properties don't have qualifiers.
Blank Nodes can be treated some kind of label to be distinguished from
URIs. We write use the pseudo URI scheme "_:" here.
Mapping RDF onto PropertyGraphs --
A/ Each subject or object URI or bNode becomes a vertex with a URI or
bNode as label.
B/ Each property value of subject V, if it has a literal object, it
becomes an attribute of V, named by the URI of the property.
C/ Each property value of subject V that is a URI or blank node, becomes
an edge in the property graph, with label the URI of the property.
Attributes on edges are not used.
In the language of the RDF-2004 working group, literals are not tidy [2]
in property graphs.
In RDF-speak:
:a :p 123 .
:b :q 123 .
and pattern
{ ?x :p ?v .
?y :q ?v . }
works because 123 has in-edges of :p and :q. It is a tidy literal
meaning there is on node in the graph for 123, not two.
This does not happen in PropertyGraphs; access to attributes is
different to accessing vertexes (e.g. the ".has" operation in gremlin).
This mapping also suggests how to turn a property graph without
attributes on edges into an RDF graph. Edges with attributes can be
encoded as n-ary relationships [3].
An alternative mapping is to not use attributes at all. Each subject or
object becomes a vertex, and every triple becomes and edge. But now the
labelling of the vertexes needs to include datatype/URI information.
This is much more an encoding of RDF onto PG, rather than a mapping.
In an encoding, the information is there and can be extracted but
working directly on the encoding with the PG tools can be unnatural. In
a mapping, you could query and navigate the PG graph using PG tools e.g.
look up all vertexes with an attribute of 123.
Andy
[1] http://lists.w3.org/Archives/Public/semantic-web/2013Aug/0026.html
[2] http://www.w3.org/TR/2002/WD-rdf-concepts-20020829/
[3] http://www.w3.org/TR/swbp-n-aryRelations/
Received on Friday, 3 January 2014 09:56:28 UTC