2D presentation O for overview, ? for help).Continuous HTML. Publications
RDF is a graph data model:
Developed a tool rdfpuml that makes true diagrams directly from Turtle examples
Benefits:
Source Turtle (puml:
are diagram control triples, explained further)
cona:456-thing crm:P12i_was_present_at cona:456-discovery-123. cona:456-discovery-123 a crmx:Discovery; crm:P2_has_type <cona/production/discovery>; crm:P4_has_time-span cona:456-discovery-123-date. cona:456-discovery-123-date a crm:E52_Time-Span; crm:P82a_begin_of_the_begin "1800"^^xsd:gYear; crm:P82b_end_of_the_end "1850"^^xsd:gYear. ######################################## <cona/production/discovery> a puml:Inline.
Takes care of many hairy details, eg node name sanitization, collecting property names & values, inlining, Reification/Association, replacing ()
with []
(puml quirk)…
@startuml hide empty methods hide empty attributes hide circle skinparam classAttributeIconSize 0 class cona_456_discovery_123 as "cona:456-discovery-123" cona_456_discovery_123 : a crmx:Discovery class cona_456_discovery_123_date as "cona:456-discovery-123-date" cona_456_discovery_123 --> cona_456_discovery_123_date : crm:P4_has_time-span cona_456_discovery_123 : crm:P2_has_type cona:production/discovery cona_456_discovery_123_date : a crm:E52_Time-Span cona_456_discovery_123_date : crm:P82a_begin_of_the_begin "1800"^^xsd:gYear cona_456_discovery_123_date : crm:P82b_end_of_the_end "1850"^^xsd:gYear class cona_456_thing as "cona:456-thing" cona_456_thing --> cona_456_discovery_123 : crm:P12i_was_present_at @enduml
Diagram readability is a prime concern. Some measures:
rdf:type
comes first)Inline resource (optional label): used often for lookup values
<cona/event/competition> a puml:Inline. cona_contrib:10000000 a puml:Inline; rdfs:label "VP".
Inline property: show all objects of a property inlined
fn:annotationSetFrame a puml:InlineProperty.
puml:
used for diagram control (usually written after ####
)
Customize arrow for one relation or all prop instances
<subj> puml:$dir-$head-$line <obj> . <prop> puml:arrow puml:$dir-$head-$line .
$dir
: left, right, up, down (default)$head
: none="", tri="|>", star="*", o="o" (default=normal arrow)$line
: dashed (default is solid)cona:456-production puml:left cona:456-motivation-123.
Stereotype: UML lingo for «guillemetted name» and colored circle.
iso:ThesaurusArray puml:stereotype "(A,red)". gvp:GuideTerm puml:stereotype "(G,green)". gvp:Concept puml:stereotype "(C,lightblue)".
<s> <p> <o>
represented as node with 3 addressing props plus extra data<node> a <ReificationClass>; <subjectProp> <s>; <shortcutProp> <p>; <objectProp> <o>; # extra data, eg dct:created, dct:creator
rdf:Statement
)crmx:property
or bmo:PX_property
)ReificationClass | subjectProp | shortcutProp | objectProp | prop (shortcut) |
---|---|---|---|---|
rdf:Statement | rdf:subject | rdf:predicate | rdf:object | any prop |
crm:E13_Attribute _Assignment | crm:P140_assigned _attribute_to | crmx:property | crm:P141_assigned | any CRM prop |
crm:E14_Condition _Assessment | crm:P34_concerned | crmx:property | crm:P35_has_identified | crm:P44_has_condition |
crm:E15_Identifier _Assignment | crm:P140_assigned _attribute_to | crmx:property | crm:P37_assigned, crm:P38_deassigned | crm:P1_is_identified_by, crm:P102_has_title |
crm:E16_Measurement | crm:P39_measured | crmx:property | crm:P40_observed _dimension | crm:P43_has_dimension |
crm:E17_Type _Assignment | crm:P41_classified | crmx:property | crm:P42_assigned | crm:P2_has_type or subprop |
puml:noReify
to avoid making reification
Aggressive URL shortening, collecting multiple values, value comments
Arrow direction, reification
One option how to map "cast after" (from the same mold)
Jewish social networks: CIDOC CRM and AgRelOn
Global influence and reachability
FISE (Stanbol) is used to express Confidence
Stereotypes (circle, «italic»), arrow direction
Made with PlantUML "by hand", not rdfpuml. Uses PlantUML Packages
Blank nodes, RDF lists
Model is evolving as we unravel more of the data (github "image diff")
R2RML is the W3C standard for RDBMS->RDF conversion
rdf2rdb generates R2RML transformations from examples:
constituents
constituentid | constituent |
1 | 'Getty Museum' |
2 | 'MoMA' |
3 | 'LACMA' |
exhibitions
exhibitionid | exhdepartment | exhtitle | displaydate | beginisodate | endisodate |
123 | 53 | 'Getty through the ages' | 'October 2016' | '2016-10-01' | '2016-10-30' |
exhvenuesxrefs
exhvenxref | exhid | conid | conaddrid | approved | dispord | displaydate | beginisodate | endisodate |
202 | 123 | 2 | 102 | 1 | 1 | 'Early Oct 2016' | '2016-10-01' | '2016-10-15' |
203 | 123 | 3 | 103 | 1 | 2 | 'Late Oct 2016' | '2016-10-16' | '2016-10-30' |
exhvenobjxrefs
exhvenuexrefid | objectid | catalognumber | begindispldateiso | enddispldateiso | displayed |
202 | 1001 | 'cat 1001' | '2016-10-01' | '2016-10-15' | 1 |
203 | 1001 | 'cat 1001' | '2016-10-16' | '2016-10-30' | 1 |
202 | 1002 | 'cat 1002' | '2016-10-01' | '2016-10-15' | 1 |
R2RML works great for RDBMS, but how about other sources?
Working to extend rdf2rml to generate: