Issue 12793: Design of RDF metamodel for rdf:Statement, triple, and graph controversial (odm-ftf) Source: NIST (Mr. Evan K. Wallace, evan.wallace(at)nist.gov) Nature: Revision Severity: Significant Summary: Design of RDF metamodel for rdf:Statement, triple, and graph controversial in semantic web community. In November-December 2007, there were discussions of the ODM metamodels for RDF and OWL within the OWL working group of the W3C. It became clear from these discussions that key OWL and RDF experts were surprised and not particularly happy with how ODM modeled the RDF data model and reification vocabulary. These portions of the RDF specification describe the fundamental data model for RDF assertions: Triple with subject, predicate and object properties; Graphs for collecting triples as sets of assertions; and a reification vocabulary enabling assertions about triples themselves. Pragmatic design decisions were made for the ODM metamodel which merged support for triples and the reification vocabulary into a single class, Statement, and merged support for a non-standard extension for RDF, named graphs, with graph. Unfortunately, the reification vocabulary for RDF has proved problematic and controversial, and because these aspects are key to the semantics of RDF, some are very sensitive about how they are modeled. To encourage better acceptance of ODM in the semantic web community the RDF metamodel should be changed to correspond with expectations of SemWeb experts. Triples, Statements, Graphs and Named Graphs should all be modeled with separate constructs with non-normative and non-standard elements noted. The OWL Ontology model which uses these constructs should be modified to use the fundamental rdf forms: triple and graph, and should do this in a way consistent with the RDF specifications, e.g., RDF triples in a graph are considered unordered (a set). Resolution: Factor the Statements diagram in Figure 10.2 in RDFBase into 3 diagrams: Graph Data Model, Reification, and Graphs. This separates rdf triples from statements about them and creates a separate construct for Named Graph since it is not a part of the current rdf specification. The diagram for rdf:statements is now called Reification (rdfs calls this the reification vocabulary), the Graph Data Model diagram depicts triples, and the Graphs diagram depicts RDF graphs and named graphs. New subsections in RDFBase will be added for RDF Reification and Graphs: Reification after the Literals section and Graphs after Reification. Places in odm metamodels which extended or otherwise referred to statements are changed to refer to triples. This includes the Documents model in the RDFWeb package and the Ontology model in OWLBase. Changes include: § Changing section 10.2 from describing RDF Statements to describing Triples. § Revising figure 10.2 to describe triples, moving RDF Graph to 10.5, eliminating Reification kind, and introducing a supertype which is a complete and disjoint covering for URIReferenceNode, BlankNode, and RDFLiteral called Node for RDFSubject and RDFObject roles from Triple. § Adding a new section 10.4 called RDF Statements to describe the RDF reification vocabulary. Including a diagram describing Statements and its relationship to Triples. § Adding a new section 10.5 called Graphs describing rdf graphs and named triples. This includes a Graphs diagram depicting RDF Graphs and Named Graphs as separate classes and including associations on named graphs to for equivalentGraphs and subGraphs per the seminal named graphs reference. § Revising Documents and Namespaces in the RDFWeb package to refer to triples instead of statements and revising the Documents diagram accordingly. § Revising OWL Ontology section and diagram in the OWLBase package to refer to triples instead of statements and to eliminate {ordered} attribute for sets of triples. Revised Text: 1. Revise current section 10.2 RDFBase Package, RDF Statements as follows: Change the title of "10.2 RDFBase Package, RDF Statements" to "10.2 RDFBase Package, RDF Triples". Replace current figure 10.2 - RDFBase Package, The Statements Diagram with RDFBase Package, The Graph Data Model (see below) Change the text in first sentence of section 10.2 from "depicts the RDF base statements diagram" to "depicts the RDF base graph data model". Replace the second paragraph with the text: "RDF provides a reification vocabulary for making statements about triples. This is described in section 10.4 RDFBase Package, RDF Statements." Delete third paragraph. Add new subsection 10.2.2 Node after BlankNode subsection. The Description section should begin "The subject and object of a Triple of of type Node. URIReferenceNode, BlankNode, and RDFSLiteral form a complete and disjoint covering of Node." Move the constraints from RDFSResource to Node. Add a Semantics section for Node which states: "This type represents the nodes in RDF Graphs." Add a sentence into the Semantics section for RDFProperty which states: "This type represents the arc in RDF graphs." Add a constraint for RDFSLiteral that a literal may not be an RDFobject or RDFpredicate. Change the title of 10.2.6 RDFStatement to RDF Triple In the Triple subsection do the following: § Delete reification attribute bullet and replace with "None" unindented. § In first association bullet change StatementForGraph to TripleForGraph and statement to triple. § Move NameForReification association to new RDFStatement in Reification section. § Change the text for SubjectForStatement association to read: "RDFsubject: Node [1] in association SubjectForTriple - links a triple to the node that is the subject of the triple." § Change the text for PredicateForStatement association to read: "RDFpredicate: RDFProperty [1] in association PredicateForTriple - links a triple to the property that is the predicate of the triple." § Change the text for ObjectForStatement association to read: "RDFobject: Node [1] in association SubjectForTriple - links a triple to the node that is the subject of the triple." § Move last association (specialize RDFSResource) to RDFStatement in Reification section. § Slightly modify the first constraint to remove "resource" and the parenthesis around node. § Remove the last sentence of Semantics section. Delete ReificationKind entirely since reified triples are now always represented by RDFStatements. Move RDF Graph to new Graphs section. 2. Add a new RDFBase, RDF Statements section (10.4) following the RDF literals section with text and figure as show below. 10.4 RDFBase Package, RDF Statements RDFS provides a reification vocabulary with no formal semantics. Figure 10.? - RDFBase Package, The Reification Diagram 10.4.1 RDFProperty (Augmented Definition) Associations · statementWithPredicate:RDFStatement [1] in association RDFPredicate - links a statement to its predicate. 10.4.2 RDFResource (Augmented Definition) Associations · statementWithObject:RDFStatement [0..*] in association RDFObject - a resource represents an object of zero or more statements · statementWithSubject:RDFStatement [0..*] in association RDFSubject - a resource represents an subject of zero or more statements 10.4.3 RDFStatement Description RDF Statement provides a way to make statements about triples or describe statements without asserting them. Attributes None Associations · RDFobject :RDFSResource [1] in association RDFObject - links a statement to the resource that is its object. · RDFpredicate: RDFSProperty [1] in association RDFPredicate - links a statement to a property that is its predicate. · RDFsubject: RDFSResource [1] in association RDFSubject - links a statement to a resource that is its subject. · Triple: Triple [0..1] in association ReificationForTriple - links a statement to the triple it reifies, if such a triple exists. · Specialize Class RDFSResource. 10.4.4 Triple (Augmented Definition) Associations · statement:RDFStatement in association ReificationForTriple - links a triple with a statements that reifies it, if the triple is reified. 3. Add a new RDFBase Package, RDF Graphs section 10.5 using the text and figure below. 10.5 RDFBase Package, RDF Graphs Figure 10.? - RDFBase Package, The Graphs Diagram 10.5.1 NamedGraph Description A named graph is a uri reference and RDF graph pair. It effectively provides a way to name an RDF graph and thus refer to the graph in a graph. At the time of this writing, NamedGraphs are not a part of RDF, but have been proposed as a way of associating metadata with semantic web content that can be used to handle issues of trust and access, among other things. A Named Graph construct is included here because of the importance of this feature and the expectation that it will eventually be incorporated into the semantic web infrastructure. However, ODM tools are not required to support this element, and it may change in future revisions if the W3C standardizes this in a form that differs from that described in Named Graphs, Provenance and Trust Attributes None Associations · graphForNG:RDFGraph [1] in association GraphForNamedGraph - a named graph is associated with exactly one RDF graph. · subGraphOf:NamedGraph [1..*] in association SubGraphOf - links a named graph with named graphs for which it is a subgraph. · RDFGequivalentGraph:NamedGraph[0..*] in association EquivalentGraph - links a named graph with named graphs that are equivalent. · Specialize class RDFResource. Constraints [1] The multiplicity on the derived URIRefForResource association on the uriRef role must be 1 for NamedGraphs. Semantics A named graph is a first class object that represents an RDF graph. It is named with a URIReference. Two relationship types are predefined for relationships among named graphs. These are EquivalentGraph and SubGraphOf. These assert equivalence and subset relationships respectively among the RDF graphs (in the graphForNG role) that correspond to the named graphs linked by these relationships. 10.5.2 RDFGraph Description An RDF Graph is a set of RDF triples. The set of nodes of an RDF graph is the set of subjects and objects of triples in the graph. A number of classes in the metamodel, including RDFGraph, RDFStatement, Triple, Document, etc., are included (1) for the sake of completeness, and (2) are provided for vendors to use, as needed from an application perspective. They may not be necessary for all tools, and may not necessarily be accessible to end users, again, depending on the application requirements Attributes None Associations · namedGraph:NamedGraph [0..*] in association GraphForNamedGraph - links an RDF graph with named graphs which may represent it. · triple:Triple [0..*] in association TripleForGraph - links an RDF graph with the triples it contains. Constraints None Semantics As described in [RDF Semantics], RDF is an assertional language, intended for use in defining formal vocabularies and using them to state facts and axioms about some domain. An RDF graph is defined as a set of RDF triples. A subgraph of an RDF graph is a subset of the triples in the graph. A triple is identified with the singleton set containing it, so that each triple in a graph is considered to be a subgraph. A proper subgraph is a proper subset of the triples in the graph. A ground RDF graph is one with no blank nodes. The assertion of an RDF triple says that some relationship, indicated by the predicate, holds between the things denoted by subject and object of the triple. The assertion of an RDF graph amounts to asserting all the triples in it, so the meaning of an RDF graph is the conjunction (logical AND) of the statements corresponding to all the triples it contains. 4. Make the following changes in Documents and Namespaces: 4.1 In the paragraph entitled "Multiple graphs in the same document." Change the beginning of the sentence which reads "Thus, the optional name attribute on the Graph class supports..." with "Thus, the NamedGraph class can be used to support..." 4.2 Replace the current documents diagram with the one below which replaces the Statement class with Triple and changes the association and role names for Triple accordingly: 4.3 In the Associations list for Document replace in the third bullet which reads "statement:RDFStatement [1..*] in association StatementForDocument - links a document to the set of triples (statements) in contains (ordered)." with "triple:Triple [1..*] in association TripleForDocument - links a document to the set of triples in contains." 4.4 Replace the entire10.?.5 RDFStatement (Augemented Definition) subsection with the text below. 10.?.5 Triple (Augumented Definition) Associations · document:Document [1..*] in association TripleForDocument - the document(s) containing the triple. 5. In OWLBase Package - OWL Ontology change all occurrences of statement to triple and remove ordering attribute on association end linking to triples. 5.1 At the end of the first sentence of the intro replace "statement" with "triple". 5.2 Replace the Ontology Diagram with the one below which replaces the OWLStatement class with Triple. 5.3 Make the following changes to the OWLGraph subsection 5.3.1 Change the second association for OWLGraph from "owlStatement:OWLStatement [1..*] in association StatementForGraph (deverived - links an OWL graph to the ordered set of triples it contains." to "triple:Triple [1..*] in association TripleForGraph (derived) - links an Owl graph to the set of triples it contains." 5.3.2 Replace constraint "[1] If an OWLStatement s of OWLOntology o, identified through StatementForOntology, is linked through /StatementForGraph to an OWLGraph g, then that OWLGraph g must be linked with OWL Ontology o." with "[1] If an OWLTriple t of OWLOntology o, identified through TripleForOntology, is linked through /TripleForGraph to an OWLGraph g, then that OWLGraph g must be linked with OWL Ontology o." 5.3.3 In constraint "[2] If OWLGraph g is linked with an OWLOntology o, then they must have a statement in common.", change "statement in common" to "triple in common". 5.4 In OWLOntology subsection make the following changes: 5.4.1 In 1st association reading "owlGraph:OWLGraph [1..*] in association GraphForOntology - links an ontology to one or more graphs containing statements that define it." change "statements that" to "triples that". 5.4.2 Replace penultimate association reading "owlStatement:OWLStatement [1..*] in association StatementForOntology - links an ontology to one or more ordered statements it contains." with "owlTriple:OWLTriple [1..*] in association TripleForOntology - links an ontology to one or more triples it contains." 5.4.3 Replace constraint 2 reading "[2] If an OWLStatement s of OWLOntology o, identified through StatementForOntology, is linked through /StatementForGraph to an OWLGraph g, then that OWLGraph g must be linked with OWLOntology o." with "[2] If an OWLTriple s of OWLOntology o, identified through TripleForOntology, is linked through /TripleForGraph to an OWLGraph g, then that OWLGraph g must be linked with OWLOntology o." 5.4.4 In constraint 3 reading "[3] If an OWLGraph g is linked with an OWLOntology o, then they must have a statement in common." replace "statement in common" with "triple in common". 5.4.5 Replace constraint 4 reading "[4] If an OWLStatement is linked through /StatementForGraph to an OWLGraph g of an OWLOntology o (identified through GraphForOntology), then that OWLStatement s must be in OWLOntology o" with "[4] If an OWLTriple is linked through /TripleForGraph to an OWLGraph g of an OWLOntology o (identified through GraphForOntology), then that OWLTriple t must be in OWLOntology o". 5.5 Replace entire subsection 11.2.3 OWL Statement with a subsection for Triple (Augmented Definition) using the following text: 11.2.3 Triple (Augumented Definition) Associations · ontology:OWLOntology [0..*] in association TripleForOntology - relates zero or more ontologies to the statements they contain. · owlGraph:OWLGraph [1..*] in association TripleForGraph (derived) - links an OWL graph to the set of triples it contains. Contraints [1] If an OWLTriple is linked through /TriplesForGraph to an OWLGraph g of an OWLOntology o (identified through GraphForOntology), then that OWLTriple t must be in OWLOntology o. Actions taken: August 21, 2008: received issue January 19, 2009: closed issue Discussion: End of Annotations:===== ilScanner-Watermark: 1219938294.57217@JYx4FcNdstddNb9kJ0XeMQ Date: Thu, 21 Aug 2008 11:44:53 -0400 From: Evan Wallace User-Agent: Thunderbird 2.0.0.16 (X11/20080723) To: issues@omg.org Subject: Design of RDF metamodel for rdf:Statement, triple, and graph controversial in semantic web community (odm-ftf) X-MailScanner-Information: Please contact postmaster@mel.nist.gov for more information X-MailScanner-ID: m7LFirMM005568 X-MailScanner: Found to be clean X-MailScanner-SpamCheck: X-MailScanner-From: ewallace@cme.nist.gov X-Spam-Status: No specification: Ontology Definition Metamodel document: ptc/2007-09-09 Issue title: Design of RDF metamodel for rdf:Statement, triple, and graph controversial in semantic web community (odm-ftf) Source: NIST, Evan Wallace Nature: Revision Severity: Significant Summary: In November-December 2007, there were discussions of the ODM metamodels for RDF and OWL within the OWL working group of the W3C. It became clear from these discussions that key OWL and RDF experts were surprised and not particularly happy with how ODM modeled the RDF data model and reification vocabulary. These portions of the RDF specification describe the fundamental data model for RDF assertions: Triple with subject, predicate and object properties; Graphs for collecting triples as sets of assertions; and a reification vocabulary enabling assertions about triples themselves. Pragmatic design decisions were made for the ODM metamodel which merged support for triples and the reification vocabulary into a single class, Statement, and merged support for a non-standard extension for RDF, named graphs, with graph. Unfortunately, the reification vocabulary for RDF has proved problematic and controversial, and because these aspects are key to the semantics of RDF, some are very sensitive about how they are modeled. To encourage better acceptance of ODM in the semantic web community the RDF metamodel should be changed to correspond with expectations of SemWeb experts. Triples, Statements, Graphs and Named Graphs should all be modeled with separate constructs with non-normative and non-standard elements noted. The OWL Ontology model which uses these constructs should be modified to use the fundamental rdf forms: triple and graph, and should do this in a way consistent with the RDF specifications, e.g., RDF triples in a graph are considered unordered (a set).