--- a/rdf-dataset/index.html Tue Sep 17 10:51:24 2013 +0200
+++ b/rdf-dataset/index.html Tue Sep 17 11:36:09 2013 +0200
@@ -3,20 +3,6 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>RDF Dataset Semantics</title>
- <style type="text/css">
- h5 {
- margin-bottom: 0;
- padding-bottom: 0.15em;
- border-bottom: 1px solid #ccc;
- background: transparent;
- color: #005a9c;
- font-weight: normal;
- text-align: left;
- font-family: sans-serif;
- margin-left: 0;
- margin-left: 1em
- }
- </style>
<script src="http://www.w3.org/Tools/respec/respec-w3c-common" class="remove"></script>
<script class='remove'>
var respecConfig = {
@@ -34,7 +20,7 @@
"SPARQL11-SERVICE-DESCRIPTION" : "Gregory Todd Williams. <cite><a href=\"http://www.w3.org/TR/2013/REC-sparql11-service-description-20130321/\"><cite>SPARQL 1.1 Entailment Regimes.</a></cite> 21 March 2013. W3C Recommendation. URL: <a href=\"http://www.w3.org/TR/2013/REC-sparql11-service-description-20130321/\">http://www.w3.org/TR/2013/REC-sparql11-service-description-20130321/</a>. The latest edition is available at <a href=\"http://www.w3.org/TR/sparql11-service-description/\">http://www.w3.org/TR/sparql11-service-description/</a>",
-"TEMPORAL-RDF" : "Claudio Gutièrrez, Carlos A. Hurtado, Alejandro A. Vaisman. <cite>Temporal RDF.</cite> In The Semantic Web: Research and Applications, Second European Semantic Web Conference, ESWC 2005, Heraklion, Crete, Greece, May 29 - June 1, 2005, Proceedings. Springer, LNCS 3532, pp. 93-107",
+"TEMPORAL-RDF" : "Claudio Gutiérrez, Carlos A. Hurtado, Alejandro A. Vaisman. <cite>Temporal RDF.</cite> In The Semantic Web: Research and Applications, Second European Semantic Web Conference, ESWC 2005, Heraklion, Crete, Greece, May 29 - June 1, 2005, Proceedings. Springer, LNCS 3532, pp. 93-107",
"FUZZY-RDF" : "Umberto Straccia. <cite>A Minimal Deductive System for General Fuzzy RDF.</cite> In Web Reasoning and Rule Systems, Third International Conference, RR 2009, Chantilly, VA, USA, October 25-26, 2009, Proceedings. Springer, LNCS 5837, pp. 166-181",
@@ -83,7 +69,7 @@
// only "name" is required
editors: [
{ name: "Antoine Zimmermann", url: "http://www.emse.fr/~zimmermann/",
- company: "Ècole Nationale Supèrieure des Mines de Saint-Ètienne", companyURL: "http://www.emse.fr/",
+ company: "École Nationale Supérieure des Mines de Saint-Étienne", companyURL: "http://www.emse.fr/",
},
],
//otherContributors: {
@@ -126,6 +112,21 @@
// A number of references have been patched into the local berjon.biblio and need to be added to the global biblio in CVS:
</script>
+ <style type="text/css">
+ h5 {
+ margin-bottom: 0;
+ padding-bottom: 0.15em;
+ border-bottom: 1px solid #ccc;
+ background: transparent;
+ color: #005a9c;
+ font-weight: normal;
+ text-align: left;
+ font-family: sans-serif;
+ margin-left: 0;
+ margin-left: 1em
+ }
+ </style>
+ <link rel="stylesheet" type="text/css" href="http://www.w3.org/StyleSheets/TR/W3C-WG-NOTE"/>
</head>
<body>
@@ -135,7 +136,7 @@
</section>
<section id="sec-introduction">
- <h2>Introduction</h2>
+ <h2 id="introduction">Introduction</h2>
<p>The <a href="http://www.w3.org/TR/rdf11-concepts/">Resource Description Framework (RDF)</a> version 1.1 defines the concept of RDF datasets, a notion introduced first by the SPARQL specification [[RDF-SPARQL-QUERY]]. An RDF dataset is defined as a collection of <a title="RDF graph">RDF graphs</a> where all but one are <a title="named graph">named graphs</a> associated with an <a>IRI</a> or <a>blank node</a> (the <a>graph name</a>), and the unnamed default graph [[RDF11-CONCEPTS]]. Given that RDF is a data model equiped with a formal semantics [[RDF11-MT]], it is natural to try and define what the semantics of datasets should be.</p>
@@ -176,7 +177,7 @@
</section>
<section id="sec-existing-work">
- <h2>Existing Work</h2>
+ <h2 id="existing-work">Existing Work</h2>
<p>We first take a look at existing specifications that could shed a light on how the semantics of datasets should be defined. There are three important documents that closely relate to the issue:</p>
<ul>
@@ -185,8 +186,8 @@
<li>the SPARQL specification [[RDF-SPARQL-QUERY]], which defines RDF datasets and how to query them.</li>
</ul>
- <section id="rdf-semantics">
- <h3>The RDF semantics</h3>
+ <section id="sec-rdf-semantics">
+ <h3 id="rdf-semantics">The RDF semantics</h3>
<!--<p class="issue">Part of what follows is somewhat subjective.</p>-->
@@ -196,14 +197,14 @@
<p>Conceptually, it is problematic since one of the reasons for separating triples into distinct (named) graphs is to avoid propagating the knowledge of one graph to the entire triple base. Sometimes, contradicting graphs need to coexist in a store. Sometimes named graphs are not endorsed by the system as a whole, they are merely quoted.</p>
</section>
- <section id="named-graph-paper">
- <h3>The Named Graphs paper</h3>
+ <section id="sec-named-graph-paper">
+ <h3 id="named-graph">The Named Graphs paper</h3>
<p>In Carrol et al., a named graph is simply defined as a pair comprising an IRI and an RDF graph. The notion of RDF interpretation is extended to named graphs by saying that the graph IRI in the pair must denote the pair itself. This non-ambiguously answers the question of what the graph IRI denotes. This can then be used to define a proper dataset semantics, as shown in Section 3.3.</p>
</section>
- <section id="sparql">
- <h3>The SPARQL specification</h3>
+ <section id="sec-sparql">
+ <h3 id="sparql">The SPARQL specification</h3>
<p>RDF 1.1 defines the notion of RDF dataset identically to SPARQL, which introduced it first. So, in order to understand the semantics of dataset, it is worth looking at how SPARQL uses datasets. SPARQL defines what are answers to queries posed against a dataset, but it never defines the notions that are key to a model theoretic formal semantics: it neither presents interpretations nor entailment. Still, it is worth noticing that a ASK query that only contains a basic graph pattern without variables yields the same result as asking whether the RDF graph in the query is entailed by the default graph. Based on this observation, one may extrapolate that a ASK query containing no variables and only GRAPH graph patterns would yield the same result as dataset entailment.</p>
<p>This can be used as a guide for formalizing the semantics of datasets, as can be seen in Section 3.7.</p>
@@ -214,7 +215,7 @@
<section id="options">
- <h2>Formal definitions</h2>
+ <h2 id="formal-definitions">Formal definitions</h2>
<p>This section presents the different options proposed, together with their formal definitions. We include each time a discussion of the merrits of the choice, and some properties.</p>
<p>Each subsection here describes the option informally, before presenting the formal definitions. As far as the formal part is concerned, one has to be familiar with the definitions given in RDF Semantics. We rely a lot on the notion of interpretation and entailment, which are key in model theory.</p>
@@ -228,13 +229,13 @@
<p>For an entailment regime <var>E</var>, we will say <var>E</var>-interpretation, <var>E</var>-entailment, <var>E</var>-equivalence, <var>E</var>-consistency to describe the notions of interpretations, entailment, equivalence and consistency associated with the regime <var>E</var>. Similarly, we will use the terms dataset-interpretation, dataset-entailment, dataset-equivalence, dataset-consistency for the corresponding notions in dataset semantics.</p>
<section>
- <h3>Named graphs have no meaning</h3>
+ <h3 id="no-meaning">Named graphs have no meaning</h3>
<p>The simplest semantics defines an interpretation of a dataset as an RDF interpretation of the default graph. The dataset is true, according to the interpretation, if and only if the default graph is true. In this case, any datasets that have equivalent default graphs are dataset-equivalent.</p>
<p>This means that the named graphs in a dataset are irrelevent to determining the truth of a dataset. Therefore, arbitrary modifications of the named graphs in a graph store always yield an equivalent dataset, according to this semantics.</p>
- <h4 class="formal">Formalization</h4>
+ <h4 id="f1" class="formal">Formalization</h4>
<p>Considering an entailment regime <var>E</var>, a dataset-interpretation with respect to <var>E</var> is an <var>E</var>-interpretation. Given an interpretation <var>I</var> and a dataset <var>D</var> having default graph <var>G</var> and named graphs <var>NG</var>, <var>I(D)</var> is true if and only if <var>I(G)</var> is true.</p>
- <h4 class="ex">Examples of entailement and non-entailments</h4>
+ <h4 id="ex1" class="ex">Examples of entailement and non-entailments</h4>
<p>Consider the following dataset:</p>
<pre class="example">{ :s :p :o . }
:g1 { :a :b :c }</pre>
@@ -253,24 +254,24 @@
:g1 :created "2013-09-17"^^xsd:date .}
:g1 { :x :y :z }</pre>
- <h4 class="prop">Properties of this dataset semantics</h4>
+ <h4 id="p1" class="prop">Properties of this dataset semantics</h4>
<p>Assuming this semantics is convenient since it merely ignores named graphs in a dataset. As a result, datasets can be simply treated as regular RDF graphs by extracting the default graph. Named graphs can still be used to preserve useful information, but it bares no more meaning than a commentary in a program source code.</p>
<p>The obvious disadvantage is that, since named graphs are completely disregarded, there is no added value in using RDF datasets rather than regular RDF graphs.</p>
</section>
<section>
- <h3>Default graph as union or as merge</h3>
+ <h3 id="union">Default graph as union or as merge</h3>
<p>It is sometimes assumed that named graphs are simply a convenient way of sorting the triples but all the triples participte in a united knowledge base that takes the place of the default graph. More precisely, a dataset is considered to be true if all the triples in all the graphs, named or default, are true together. This description allows two formalizations of dataset semantics, depending on how blank nodes spanning several named graphs are treated.</p>
- <h4 class="formal">Formalization: first version</h4>
+ <h4 id="f2-1" class="formal">Formalization: first version</h4>
<p>We define a dataset-interpretation with respect to an entailment regime <var>E</var> as an <var>E</var>-interpretation. Given a dataset-interpretation <var>I</var> and a dataset <var>D</var> having default graph <var>G</var> and named fgraphs <var>NG</var>, <var>I(D)</var> is true if and only if <var>I(G)</var> is true and for all <var>ng</var> in <var>NG</var>, <var>I(ng)</var> is true.</p>
<p>This is equivalent to <var>I(D)</var> is true if <var>I(H)</var> is true where <var>H</var> is the <a>merge</a> of all the RDF graphs, named or default, appearing in <var>D</var>.</p>
- <h4 class="formal">Formalization: second version</h4>
+ <h4 id="f2-2" class="formal">Formalization: second version</h4>
<p>We define a dataset-interpretation with respect to an entailment regime <var>E</var> as an <var>E</var>-interpretation. Given a dataset-interpretation <var>I</var> and a dataset <var>D</var> having default graph <var>G</var> and named graphs <var>NG</var>, <var>I(D)</var> is true if and only if <var>I(H)</var> is true where <var>H</var> is the union of all the RDF graphs, named or default, appearing in <var>D</var>.</p>
<p>An alternative presentation of this variant is the following: define <var>I+A</var> to be an extended interpretation which is like <var>I</var> except that it uses <var>A</var> to give the interpretation of blank nodes; define <var>blank(D)</var> to be the set of blank nodes in <var>D</var>. Then <var>I(D)</var> is true if and only if <var>[I+A](D)</var> is true for some mapping <var>A</var> from <var>blank(D)</var> to the set of resources in <var>I</var>.</p>
- <h4 class="ex">Examples</h4>
+ <h4 id="e2" class="ex">Examples</h4>
<p>Consider the following dataset:</p>
<pre class="example">{ :s :p :o . } # default graph
:g1 { :a :b :c }</pre>
@@ -282,18 +283,18 @@
:g1 { :age rdfs:range xsd:integer . }
:g2 { :bob :age "twenty" .}</pre>
- <h4 class="prop">Properties of this dataset semantics</h4>
+ <h4 id="p2" class="prop">Properties of this dataset semantics</h4>
<p>This semantics allows one to partition the triples of an RDF graph into multiple named graphs for easier data management, yet retaining the meaning of the overall RDF graph. Note that this choice of semantics does not impact the way graph names are interpreted: it is possible to further constrain the graph names to denote the RDF graph associated with it, or other possible constraints. The possible interpretations of graph names, and their consequences, are presented in the next sections.</p>
<p>This semantics is implicitely assumed by existing graph store implementations. The OWLIM RDF database management system implements reasoning techniques over RDF datasets that materialize inferred statements into the database [[citation needed]]. This is done by taking the union of the graphs in the named graphs, applying standard entailment regimes over this RDF graph and putting the inferred triples into the default graph.</p>
<p>The main drawback of this dataset semantics is that all triples in the named graphs contribute to a global knowledge that must be consistent. In situations where named graphs are used to store RDF graphs obtained from various sources on the open Web, inconsistencies or contradictions can easily occur. Notably, Web crawlers of search engines harvest all RDF documents, and it is known as a fact that the Web contains documents serializing inconsistent RDF graphs as well as documents that are mutually contradicting yet consistent on their own.</p>
</section>
<section>
- <h3>The graph name denotes the named graph or the graph</h3>
+ <h3 id="naming">The graph name denotes the named graph or the graph</h3>
<p>It is common to use the graph name as a way to identify the RDF graph inside the named graphs, or rather, to identify a particular occurence of the graph. This allows one to describe the graph or the graph source in triples. For instance, one may want to say who is the creator of a particular occurence of a graph. Assuming this semantics for graph names amounts to say that each named graph pair is an assertion that sets the <a>referent</a> of the graph name to be the associated graph.</p>
<p>Intutively, this semantics can be seen as quoting the RDF graphs inside the named graphs. In this sense, <code>:alice {:bob :is :smart}</code> has to be understood as <q>Alice said: "Bob is smart"</q> which does not entail <q>Alice said: "Bob is intelligent"</q> because Alice did not use the word "intelligent", even though "smart" and "intelligent" can be understood as equivalent.</p>
- <h4 class="formal">Formalization</h4>
+ <h4 id="f3" class="formal">Formalization</h4>
<p>We reuse the notation presented in [[RDF11-MT]]:</p>
<blockquote>Suppose I is an interpretation and A is a mapping from a set of blank nodes to the universe IR of I. Define the mapping [I+A] to be I on names, and A on blank nodes on the set: [I+A](x)=I(x) when x is a name and [I+A](x)=A(x) when x is a blank node; and extend this mapping to triples and RDF graphs using the rules given above for ground graphs.</blockquote>
<p>A dataset-interpretation <var>I</var> with respect to an entailment regime <var>E</var> is an <var>E</var>-interpretation extended to named graphs and datasets as follows:</p>
@@ -301,7 +302,7 @@
<li>if <var>D</var> is a dataset comprising default graph <var>DG</var> and named graphs <var>NG</var>, then <var>I(D)</var> is true if and only if there exists a mapping from bnodes to the universe <var>IR</var> of <var>I</var> such that <var>[I+A](DG)</var> is true and for all named graph <var>(n,g)</var> in <var>NG</var>, <var>[I+A](n)</var> = <var>(n,g)</var>.</li>
</ul>
- <h4 class="ex">Examples</h4>
+ <h4 id="ex3" class="ex">Examples</h4>
<p>Consider the following dataset:</p>
<pre class="example">{ } # empty default graph
:g1 { :a :b :c }
@@ -328,17 +329,17 @@
:s2 :p2 :o2 }
:g2 { :s1 :p1 :o1 }</pre>
- <h4 class="prop">Properties of this dataset semantics</h4>
+ <h4 id="p3" class="prop">Properties of this dataset semantics</h4>
<p>There are important implications with this semantics. First, the presence of blank nodes as graph names can be problematic because a named graph entails an infinity of other named graphs where only the graph name is changed to a different blank node. Second, graph names have to be handled almost like literals. Unlike other IRIs or blank nodes, their denotation is strictly fixed, like literals are. Therefore, any entailment regime that recognizes datatypes and use this semantics has to be able to distinguish graphs from, e.g., integers and strings. Combined with RDFS semantics, it can lead to inconsistencies, as in the last example above.</p>
<p>A variant of this dataset semantics imposes that the graph name denotes the RDF graph itself, rather than the pair. This means that two occurrences of the same graph in different named graph pairs actually identify the same thing. Thus, the graph names associated with the same RDF graphs are interchangeable in any triple in this case.</p>
</section>
<section>
- <h3>Each named graph defines its own context</h3>
+ <h3 id="context">Each named graph defines its own context</h3>
<p>Named graphs in RDF datasets are sometimes used to delimit a context in which the triples of the named graphs are true. From the truth of these triples, it is possible to infer knowledge that it is convenient to make part of the named graph. An example of such situation occurs when one wants to keep track of the evolution of the data with time. Another example is when one wants to allow different view points to be expressed and reasoned with, without creating a conflict or inconsistency. By having inferences done at the named graph level, one can prevent for instance that triples comming from untrusted parties are influenceing trusted knowledge. Yet it does not disallow reasoning with and drawing conclusions from untrusted information.</p>
<p>Intutively, this semantics can be seen as interpreting the RDF graphs inside the named graphs. In this sense, <code>:alice {:bob :is :smart}</code> has to be understood as <q>Alice said that Bob is smart</q> which entails <q>Alice said that Bob is intelligent</q> because the two sentences mean the same thing. Neither sentences mean that Alice used these actual words.</p>
- <h4 class="formal">Formalization</h4>
+ <h4 id="f4" class="formal">Formalization</h4>
<p class="issue">This does not take into account blank nodes as graph names.</p>
<p>There are several possible formalization of this. One way is to interpret the graph name as denoting a graph that represents all that is true in the context of the named graph. In this case, a dataset-interpretation with respect to an entailment regime <var>E</var> is an <var>E</var>-interpretation such that:</p>
<ul>
@@ -347,7 +348,7 @@
<li><var>I(D)</var> is false otherwise.</li>
</ul>
- <h4 class="ex">Examples</h4>
+ <h4 id="ex4" class="ex">Examples</h4>
<p>Consider the following dataset:</p>
<pre class="example">{ } # empty default graph
:g1 { :YoutubeEmployee rdfs:subClassOf :GoogleEmployee .
@@ -368,12 +369,12 @@
:g2 { :chadHurley rdf:type :YoutubeEmployee }</pre>
<p>(here, <code>:validAfter</code> and <code>:validAt</code> are custom terms that do not enforce a formal constraint, but may be used internally for, e.g., checking the temporal validity of triples in the named graph).</p>
- <h4 class="prop">Properties of this dataset semantics</h4>
+ <h4 id="p4" class="prop">Properties of this dataset semantics</h4>
<p>This semantics assumes that the truth of named graphs is preserved when replacing the RDF graphs inside named graphs with equivalent graphs. This means in particular, that one can normalise literals and still preserve the truth of a named graph. This means too that standard RDF inferences that can be drawn from the RDF graphs inside named graphs can be added to the graph associated with the graph name without impacting the truth of the RDF dataset.</p>
<p>While this semantics does not guarantee that reasoning with RDF datasets will preserve the exact triples of an original dataset, it is semantically valid to store both the original and any entailed datasets.</p>
<p>An example implementation of such a context-based semantics is Sindice [[DELBRU-ET-AL-2008]].</p>
- <h4 class="other">Variants this dataset semantics</h4>
+ <h4 id="v4" class="other">Variants this dataset semantics</h4>
<p>There are several variants of this type of dataset-semantics</p>
<ul>
<li>The default graph is interpreted as universal truth, that is, for a named graph <var>(n,G)</var>, <var>I(n)</var> <var>E</var>-entails the default graph.</li>
@@ -408,11 +409,11 @@
</section>-->
<section>
- <h3>Quad semantics</h3>
+ <h3 id="quad">Quad semantics</h3>
<p>This approach consists in considering named graph as sets of quadruples, having the subject, predicate and object of the triples as first three components, and the graph IRI as the fourth element. Each quadruple is interpreted similarly to a triple in RDF, except that the relation that the predicate denotes is not indicating a binary relation but a ternary relation.</p>
<p>This semantics is extending the semantics of RDF rather than simply reusing it.</p>
- <h4 class="formal">Formalization</h4>
+ <h4 id="f5" class="formal">Formalization</h4>
<p>A quad-interpretration is a tuple <var>(IR,IP,IEXT,IS,IL,LV)</var> where <var>IR</var>, <var>IP</var>, <var>IS</var>, <var>IL</var> and <var>LV</var> are defined as in RDF and <var>IEXT</var> is a mapping from <var>IP</var> into the powerset of <var>IR × IR union IR × IR × IR</var>.</p>
<p>Since this option modifies the notion of simple-interpretation, which is the basis for all <var>E</var>-interpretations in any entailment regime E, it is not clear how it can be extended to arbitrary entailment regimes. For instance, does the following quad set:</p>
@@ -421,12 +422,12 @@
<p>RDFS-dataset-entails:</p>
<pre class="example">:a rdf:type :d :x .</pre>
- <h4 class="prop">Properties of this dataset semantics</h4>
+ <h4 id="p5" class="prop">Properties of this dataset semantics</h4>
<p>With this semantics, all inferences that are valid with normal RDF triples are preserved, but it is necessary to extend RDFS in order to accomodate for ternary relations. There are several existing proposal that extends this quad semantics by dealing with a specific "dimension", such as time, uncertainty, provenance. For instance, temporal RDF [[TEMPORAL-RDF]] use the fourth element to denote a time frame, and reasoning can be performed per time frame. Special semantic rules allow one to combine triples in overlapping time frames. Fuzzy RDF [[FUZZY-RDF]] extends the semantics to deal with uncertainty. stRDF [[ST-RDF]] extends temporal RDF to deal with spatial information. Annotated RDF [[ANNOTATED-RDF]] generalizes the previous proposals.</p>
</section>
<section>
- <h3>Quoted graphs</h3>
+ <h3 id="quote">Quoted graphs</h3>
<p>Quoted graphs are a way to associate information to a specific RDF graph without constraining the relationship between a graph name and the graph associated with it in a dataset. An RDF graph is "quoted" by using a literal having a lexical form that is a syntactic expression of the graph. For instance:</p>
<pre class="example">{ :g :quotes ":a :b []"^^:turtle . }
:g { :b rdf:type rdf:Property .
@@ -436,7 +437,7 @@
</section>
<section>
- <h3>Relationship with SPARQL entailment regime</h3>
+ <h3 id="relation-with-sparql-er">Relationship with SPARQL entailment regime</h3>
<p>There is a strong relationship between SPARQL ASK queries with an entailment regime [[SPARQL11-ENTAILMENT-REGIMES]] and inferences in the regime. If an ASK query does not contain variables and its WHERE clause only contains a basic graph pattern, then the query can be seen as an RDF graph. If such a graph query <var>Q</var> returns <code>true</code> when issued against an RDF graph <var>G</var> with entailment regime <var>E</var>, then <var>G</var> <var>E</var>-entails <var>Q</var>. If it returns <code>false</code>, then <var>G</var> does not <var>E</var>-entail <var>Q</var>.</p>
<p>A dataset semantics can also be compared to what ASK queries return when they do not contain variables but may contain basic graph patterns or graph graph patterns. For instance, consider the dataset:</p>
<pre class="example">{ }
@@ -463,7 +464,7 @@
<p>The RDF Working Group did not define a formal semantics for a multiple graph data model because none of the semantics presented before could obtained consensus. Choosing one or another of the propositions before would have gone against some deployed implementations. Therefore, the Working Group discussed the possibility to define several semantics, among which an implementation could choose, and provide the means to declare which semantics is adopted.</p>
<p>This was not retained eventually, because of the lack of experience, and potentially the lack of utility, so there is no definite option for this. Nonetheless, for completeness, we describe here possible solutions.</p>
- <h3>Using vocabularies</h3>
+ <h3 id="using-vocab">Using vocabularies</h3>
<p>A dataset can be described in RDF using vocabularies like voiD [[VOID]] and the SPARQL service description vocabulary [[SPARQL11-SERVICE-DESCRIPTION]]. VoiD is used to describe how a collection of RDF triples is organized in a web site or across web sites, giving information about the size of the datasets, the location of the dump files, the IRI of the query endpoints, and so on. The notion of dataset in voiD is used as a more informal and broader concept than RDF dataset. However, an RDF dataset and the graphs in it can be describe as voiD datasets and the information can be completed with SPARQL service description</p>
<pre class="example">@prefix er: <http://www.w3.org/ns/entailment> .
@prefix sd: <http://www.w3.org/ns/sparql-service-description#> .
@@ -475,7 +476,7 @@
] .</pre>
<p>A vocabulary specifically tailored for describing the intended dataset semantics could be defined in a future specification.</p>
- <h3>Using other mechanisms</h3>
+ <h3 id="using-other">Using other mechanisms</h3>
<p>Communication of the intended semantics could be performed in various ways, from having the author tell the consumers directly, to inventing a protocol for this. Use of the HTTP protocol and content negotiation could be a possible way too. Special syntactic markers in the concrete serialization of datasets could convey the intended meaning. All of those are solutions that do not follow current practices.</p>
</section>