Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update RDF-semantics with the liberal baseline RDF and RDFS semantics #74

Merged
merged 24 commits into from
Feb 4, 2025
Merged
Changes from 21 commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
4300b64
First version of liberal semantics - it lack the entailment pattern f…
franconi Jan 27, 2025
61aa733
Missing fix to rdfs14
franconi Jan 27, 2025
553dfc9
liberal baseline RDF and RDFS semantics
franconi Jan 27, 2025
4204f21
Fixed HTML + RTD -> RDF
franconi Jan 28, 2025
ad4faa5
Fixed more HTML
franconi Jan 28, 2025
3999bd8
Minor fix in text for better English
franconi Jan 28, 2025
4e1cef6
Better English: added comma
franconi Jan 29, 2025
8487a13
Added axiomatic triple in RDF for rdf:reifies
franconi Jan 29, 2025
c5914b4
Moved the "appears in" definition before its first use.
franconi Jan 29, 2025
fd09c1f
"RDF term" definition is exported
franconi Jan 29, 2025
d734184
Added the reference to RTDF symmetric triple
franconi Jan 29, 2025
b9c0e07
Changed rdf:range to rdfs:range
franconi Jan 29, 2025
e35b247
Replaced [I+A] with I for rdf/rdfs namespace IRIs
franconi Jan 31, 2025
5c36aea
Better spacing
franconi Jan 31, 2025
c6e946f
Better formatting of rdfssemcond11 definition.
franconi Jan 31, 2025
78f45a1
Fixed a plural reference
franconi Jan 31, 2025
f8b1603
Fixed redundant condition "triple or triple term"
franconi Jan 31, 2025
4ecb8e7
Merge branch 'w3c:main' into liberal-baseline
franconi Jan 31, 2025
42f0fc2
Fixed wording of rdfs14, and references to issue about external refer…
franconi Jan 31, 2025
d853efb
Better rdfs14
franconi Jan 31, 2025
e0716d1
Added example for rdfs14
franconi Jan 31, 2025
961a1ae
Change: emdashes are better than the colons
franconi Feb 1, 2025
809ea61
Small typo in index.html
doerthe Feb 4, 2025
1670e37
fixed: emdash written as mdash
franconi Feb 4, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
148 changes: 130 additions & 18 deletions spec/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@
<p>This document is part of RDF 1.2 document suite.
This is a revision of the 2014 Semantics specification for RDF
[[RDF11-MT]] and supersedes that document.
The technical content of the document is unchanged, only minor editorial changes have been made.</a>
The technical content of the document is unchanged, only minor editorial changes have been made.
</p>

<section id="related" data-include="./common/related.html"></section>
Expand Down Expand Up @@ -260,13 +260,29 @@ <h2>Notation and Terminology</h2>

<p>A <dfn>ground</dfn> RDF graph is one that contains no blank nodes.</p>

<p>
An RDF term <dfn>appears in</dfn> a graph G if it is in the set TM(G),
defined inductively as follows:
(1) for each triple in the graph G,
its subject, predicate, and object are in TM(G);
(2) for each triple term in TH(G),
its subject, predicate, and object are in TM(G).
<br/><br/>
A triple <b><i>appears in</i></b> a graph G
if it is in G or
if the triple term composed by its subject, predicate, and object appears in G.
<p/>

<p>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
nodes to some set of RDF terms. Any graph obtained
franconi marked this conversation as resolved.
Show resolved Hide resolved
from a graph G by replacing some or all of the blank nodes N appearing in G by M(N) is
an <dfn>instance</dfn> of G. Any graph is an instance of itself,
an instance of an instance of G is an instance of G,
and if H is an instance of G then every triple in H is an instance of at least one triple
in G.</p>

<p class="issue">the defined term "RDF term" is not accessible from outside this document, which is a problem (RDF semantics, and probably other specs, need to reference it). There are other definitions in this spec that need to be exported - see <a href="https://github.com/w3c/rdf-concepts/issues/152">issue #152</a> in RDF-concepts.</p>


<p>An <dfn class="no-export lint-ignore">instance with respect to</dfn> a vocabulary
V is an <a>instance</a> in which all the
Expand Down Expand Up @@ -298,7 +314,7 @@ <h2>Notation and Terminology</h2>
</pre>

<p>is lean. <a>Ground</a> graphs are lean. </p>

<section id="unions_merges">
<h3>Shared blank nodes, unions and merges</h3>

Expand Down Expand Up @@ -940,7 +956,7 @@ <h2>RDF Interpretations</h2>
</tr>

<tr>
<td ><code>rdf:type rdf:subject rdf:predicate rdf:object
<td ><code>rdf:type rdf:reifies rdf:subject rdf:predicate rdf:object
franconi marked this conversation as resolved.
Show resolved Hide resolved
rdf:first rdf:rest rdf:value rdf:nil
rdf:List rdf:langString rdf:Property rdf:_1 rdf:_2
...</code></td>
Expand Down Expand Up @@ -973,6 +989,7 @@ <h2>RDF Interpretations</h2>
rdf:subject rdf:type rdf:Property .<br/>
rdf:predicate rdf:type rdf:Property .<br/>
rdf:object rdf:type rdf:Property .<br/>
rdf:reifies rdf:type rdf:Property .<br/>
rdf:first rdf:type rdf:Property .<br/>
rdf:rest rdf:type rdf:Property .<br/>
rdf:value rdf:type rdf:Property .<br/>
Expand Down Expand Up @@ -1064,6 +1081,7 @@ <h4>Patterns of RDF entailment (Informative)</h4>

<p>In addition, the first RDF semantic condition justifies the following entailment pattern:</p>

<!--
<table>
<tbody>
<tr>
Expand All @@ -1079,6 +1097,23 @@ <h4>Patterns of RDF entailment (Informative)</h4>
</tr>
</tbody>
</table>
-->

<table>
<tbody>
<tr>
<th></th>
<th><strong>if the triple <a>appears in</a> S</strong></th>
<th><strong>then S RDF entails, recognizing D</strong></th>
</tr>

<tr>
<td class="othertable"><dfn>rdfD2</dfn></td>
<td class="othertable">xxx aaa yyy <code>.</code></td>
<td class="othertable">aaa <code>rdf:type rdf:Property .</code> </td>
</tr>
</tbody>
</table>

<p>So that the above example also RDF entails</p><p><code>ex:p rdf:type rdf:Property .</code></p>
<p> recognizing {<code>xsd:integer</code>}.</p>
Expand Down Expand Up @@ -1122,6 +1157,7 @@ <h2>RDFS Interpretations</h2>
<tr>
<td ><code>rdfs:domain rdfs:range rdfs:Resource rdfs:Literal
rdfs:Datatype rdfs:Class rdfs:subClassOf rdfs:subPropertyOf
rdfs:Proposition
rdfs:member rdfs:Container rdfs:ContainerMembershipProperty
rdfs:comment rdfs:seeAlso rdfs:isDefinedBy
rdfs:label</code></td>
Expand Down Expand Up @@ -1210,6 +1246,15 @@ <h2>RDFS Interpretations</h2>
x is in ICEXT(I(<code>rdfs:Datatype</code>)) then <span >&lt; x,
I(<code>rdfs:Literal</code>) &gt; is in IEXT(I(<code>rdfs:subClassOf</code>))</span></p></td>
</tr>
<tr>
<td class="semantictable" id="rdfssemcond11"><p>If
exist x,y,z such that RE(x,z,y)=r, or
franconi marked this conversation as resolved.
Show resolved Hide resolved
exists x such that &lt; x,r &gt;
is in IEXT(I(<code>rdf:reifies</code>)),
<br/>
then &lt; r,I(<code>rdfs:Proposition</code>)&gt;
is in IEXT(I(<code>rdf:type</code>))</p></td>
</tr>
</table>

<table id="RDFS_axiomatic_triples">
Expand Down Expand Up @@ -1257,6 +1302,9 @@ <h2>RDFS Interpretations</h2>
rdfs:isDefinedBy rdfs:subPropertyOf rdfs:seeAlso .<br/>
<br/>

rdf:reifies rdfs:range rdfs:Proposition .<br/>
<br/>

rdfs:Datatype rdfs:subClassOf rdfs:Class .<br/>
<br/>
rdf:_1 rdf:type rdfs:ContainerMembershipProperty .<br/>
Expand All @@ -1265,7 +1313,8 @@ <h2>RDFS Interpretations</h2>
rdf:_2 rdf:type rdfs:ContainerMembershipProperty .<br/>
rdf:_2 rdfs:domain rdfs:Resource .<br/>
rdf:_2 rdfs:range rdfs:Resource . <br/>
</code>... <br/> </td>
</code>... <br/>
</td>
</tr>
</table>

Expand Down Expand Up @@ -1395,16 +1444,6 @@ <h4>Patterns of RDFS entailment (Informative)</h4>
yyy aaa zzz <code>.</code></td>
<td class="othertable">zzz <code>rdf:type</code> xxx <code>.</code></td>
</tr>
<tr >
<td class="othertable"><dfn>rdfs4a</dfn></td>
<td class="othertable">xxx aaa yyy <code>.</code></td>
<td class="othertable">xxx <code>rdf:type rdfs:Resource .</code></td>
</tr>
<tr >
<td class="othertable"><dfn>rdfs4b</dfn></td>
<td class="othertable">xxx aaa yyy<code>.</code></td>
<td class="othertable">yyy <code>rdf:type rdfs:Resource .</code></td>
</tr>
<tr >
<td class="othertable"><dfn>rdfs5</dfn></td>
<td class="othertable"> xxx <code>rdfs:subPropertyOf</code> yyy <code>.</code><br />
Expand Down Expand Up @@ -1456,6 +1495,42 @@ <h4>Patterns of RDFS entailment (Informative)</h4>
</tr>
</tbody>
</table>

<p/>

<table id="rdfs_entailment_patterns_recursive">
<tbody>
<tr>
<th ></th>
<th >If the triple <a>appears in</a> S:</th>
<th >then S RDFS <a>entails recognizing D</a>:</th>
</tr>
<tr >
<td class="othertable"><dfn>rdfs4</dfn></td>
<td class="othertable">xxx aaa yyy <code>.</code></td>
<td class="othertable">xxx <code>rdf:type rdfs:Resource .</code><br/>
yyy <code>rdf:type rdfs:Resource .</code></td>
</tr>
<tr >
<td class="othertable"><dfn>rdfs14</dfn></td>
<td class="othertable">xxx yyy &lt;&lt;(aaa bbb ccc)>> <code>.</code></td>
<td class="othertable">the graph S with the appearance replaced with<br/>
xxx yyy _:nnn <code></code><br/><br/>
_:nnn <code>rdf:type rdfs:Proposition .</code></td>
</tr>
</tbody>
</table>

<p>As an example of a RDFS entailment involving triple terms using the entailment pattern rdfs14, the following graph:</p>

<p><code>ex:a ex:b <<( ex:c ex:d <<(ex:e ex:f ex:g)>> )>> .</code></p>

<p>RDFS entails:</p>
franconi marked this conversation as resolved.
Show resolved Hide resolved

<p><code>ex:a ex:b <<( ex:c ex:d _:b1 )>> .<br/>
ex:a ex:b _:b2 .<br/>
_:b1 rdf:type rdfs:Proposition .<br/>
_:b2 rdf:type rdfs:Proposition .</code></p>

franconi marked this conversation as resolved.
Show resolved Hide resolved
<p>RDFS provides for several new ways to be <a>unsatisfiable</a> recognizing D.
For example, the following graph is RDFS unsatisfiable recognizing {<code>xsd:integer</code>, <code>xsd:boolean</code>}:</p>
Expand Down Expand Up @@ -1561,11 +1636,21 @@ <h2>Entailment rules (Informative)</h2>
ex:d ex:a ex:e .</code></td>
<td class="othertable"><code>ex:d rdf:type ex:c .</code> </td>
</tr>

<tr>
<th> </th>
<th>RDFS entails</th>
</tr>

<tr>
<td class="othertable"><code>ex:a ex:b ex:c .</code></td>
<td class="othertable"><code>&lt;&lt;(ex:a ex:b ex:c)>> rdf:type rdfs:Proposition .</code> </td>
</tr>
franconi marked this conversation as resolved.
Show resolved Hide resolved
</tbody>
</table>

<p>Both of these can be handled by allowing the rules to apply to a generalization of the RDF syntax
in which literals may occur in subject position and blank nodes may occur in predicate position.</p>
<p>These examples can be handled by allowing the rules to apply to a generalization of the RDF syntax
in which literals and triple terms may occur in subject position and blank nodes may occur in predicate position.</p>
franconi marked this conversation as resolved.
Show resolved Hide resolved

<!--<p>Define a <dfn>generalized RDF triple</dfn> to be a triple &lt;x, y, z&gt; where x and z can be an IRI, a blank node or a literal, and y can be an IRI or a blank node; and extend this to the rest of RDF, so that a generalized RDF graph is a set of generalized RDF triples. -->

Expand Down Expand Up @@ -1643,6 +1728,33 @@ <h2>Entailment rules (Informative)</h2>

<p>As noted earlier, detecting datatype entailment for larger sets of datatype IRIs
requires attention to idiosyncratic properties of the particular datatypes.</p>

<p>
The complete entailment pattern for generalized RDF with [=symmetric RDF triples=],
considering that, according to the semantics, the denotation of triple terms should
be of type <code>rdfs:Proposition</code>, is the following:
<table>
<caption>RDFS-T entailment pattern.</caption>
<tbody>
<tr>
<th > </th>
<th ><strong>if S contains</strong></th>
<th ><strong>then S RDFS entails</strong></th>
</tr>
<tr >
<td class="othertable"><dfn>Grdfs14</dfn></td>
<td class="othertable">xxx <code>rdf:type rdfs:Resource .</code><br/>
yyy <code>rdf:type rdf:Property .</code><br/>
zzz <code>rdf:type rdfs:Resource .</code><br/>
</td>
<td class="othertable"><code>&lt;&lt;(xxx yyy zzz)>> rdf:type rdfs:Proposition .</code></td>
</tr>
</tbody>
</table>
</p>

<p class="issue" data-number="76">We don't have a completeness proof for the RDFS entailment rules (yet).</p>


</section>

Expand Down
Loading