Here, my understanding of the entailments from both an RDFS perspective
(not invalid entailments, just makes it impossible to use) and OWL
(actually invalid).
RDFS 1.1 says the following:
If a property P is a subproperty of property P', then all pairs of
resources which are related by P are also related by P'. The term
super-property is often used as the inverse of subproperty. If a property
P' is a super-property of a property P, then all pairs of resources which
are related by P are also related by P'.
See: https://www.w3.org/TR/rdf-schema/#ch_properties
So, the assertion is that rdfs:label (P) is a sub property of
P1_is_identified_by (P'), therefore all resources which are related by
rdfs:label are also related by P1_is_identified_by.
Thus, if there is an assertion <x> rdfs:label "fish"^^xsd:string .
Then it is a valid inference that <x> P1_is_identified_by
"fish"^^xsd:string .
Now let's look at rdfs:range. RDFS 1.1 says:
rdfs:range is an instance of rdf:Property
<https://www.w3.org/TR/rdf-schema/#ch_property> that is used to state that *the
values of a property are instances of one or more classes.*
(emphasis added)
RDFS asserts:
The rdfs:range <https://www.w3.org/TR/rdf-schema/#ch_range> of rdfs:label
is rdfs:Literal <https://www.w3.org/TR/rdf-schema/#ch_literal>.
CRM asserts at line 1174 of the RDFS:
P1_is_identified_by rdfs:range E41_Appellation
Thus, if <x> rdfs:label "fish", then "fish" rdf:type rdfs:Literal,
crm:E41_Appellation .
Which as Martin says is not impossible, because E41_Appellation is not
declared as disjoint with rdfs:Literal ... it's just utterly meaningless
and very annoying to anyone who has to deal with it, because
crm:E41_Appellation is not a subclass of rdfs:Literal, and every practical
syntax explicitly distinguishes between literals and URI references. E.g.
there is a *syntactic* difference between the URI "http://example.com/1"
and the string "http://example.com/1" -- the former can be the subject of
triples, and the latter (like every literal) cannot.
So, by asserting that a predicate that has a declared range of a datatype
class is the sub property of a predicate that as a declared range of a
non-Datatype class, this entails that the object is both a datatype and a
resource, and *this cannot be serialized.*
In OWL, rdfs:label would be a DataProperty, and P1_is_identified_by would
be an ObjectProperty. DataProperty values MUST respect the lexical space of
the datatype, and this is where the problem happens, because the URI that
identifies the E41_Appellation is NOT in the datatype lexical space.
Further, a DataProperty and ObjectProperty *are* explicitly disjoint. In
5.8.1:
- No IRI *I* is declared in *Ax* as being of more than one type of
property; that is, no *I* is declared in *Ax* to be both object and
data, object and annotation, or data and annotation property.
See: https://www.w3.org/TR/owl2-syntax/#Typing_Constraints_of_OWL_2_DL
As a demonstration, I attach a minimal schema derived from the current RDFS.
Then, using rdflib in python, using only RDFS entailment:
from rdflib import ConjunctiveGraph
from owlrl import RDFSClosure
g = ConjunctiveGraph()
g.parse("Downloads/minimal_schema.rdfs.xml", format="xml")
rdfs_sems = RDFSClosure.RDFS_Semantics(g, axioms=True, daxioms=True,
rdfs=True)
rdfs_sems.closure()
out = rdfs_sems.graph.serialize(format="ttl")
print(out.decode('utf-8'))
...
"fish"@en a crm:E1_CRM_Entity,
crm:E41_Appellation,
crm:E90_Symbolic_Object,
rdfs:Literal,
rdfs:Resource .
As expected, it entails the nonsense that the literal "fish"@en is an E1,
E41, E90, etc. which is garbage caused by this pollution in the ontology,
as literals cannot be the subject of triples.
Hope that helps explain my unease!
Rob
On Thu, Sep 9, 2021 at 12:48 PM Martin Doerr via Crm-sig <
crm-sig@ics.forth.gr> wrote:
> Dear Francesco,
>
> This is a complex issue, which has been discussed in length in 2018 and
> basically was spelled out in the implementation guidelines for RDFS by
> Richrad Light and me.
>
> All these questions you pose have been taken into account carefully. The
> text may need improvements, but I'd kindly ask all CRM-SIG members having
> respective questions to read it carefully and give us feedback.
>
> Let me explain just a bit here from the side of logic, which is tricky and
> not the usual reasoning we apply within the CRM:
>
> A superproperty is not equivalent to a subproperty. A superproperty is
> only implied by a subproperty.
>
> Therefore: Once E41 Appellation has no necessary property, an instance of
> E41 Appellation without having a property of its own does not violate the
> range of the superproperty. Its just a poor case.
>
> (But it is completely true that rdfs:label is without properties. From the
> time of RDFS 1.1 on, which recommends the use of xsd values in literals,
> there are hidden properties in the label, such as the language tags.)
>
> This statement does also strictly not hold: "This class is subclass of
> Symbolic Object and Legal Object, therefore a E77 Persistent Item and not a
> E62 String which is a E59 Primitive Value",
>
> because a) there is no axiom in CRM saying that Persistent Item and E62
> String are disjoint.
> b) There is no declaration in the RDFS implementation that
> rdf:Literal equals E62 Sting or
> E59 Primitive Value.
>
> Obviously, RDFS makes rich use of Literal, packing stuff like WKT
> geometric values into them, which are used in geo-enabled triple stores.
>
> With the superproperty declaration, we say that whowever uses rdfs:label
> refers to a name (E41 Appellation). Unfortunately, RDFS does not allow us
> smarter things to do, but this gives the right answers to queries.
>
> All the best,
>
> Martin
>
> On 9/9/2021 6:46 PM, Francesco Beretta via Crm-sig wrote:
>
> There was unfortunately a copy-paste issue in my email.
> Le 09.09.21 à 17:35, Francesco Beretta a écrit :
>
> The P1 is identified by (identifies)
> <https://ontome.net/property/1/namespace/1> property has E41 Appellation
> as range. This class is subclass of Symbolic Object and Legal Object,
> therefore a E77 Persistent Item and not a E62 String which is a E59
> Primitive Value.
>
> Therefore an instance of E41 Appellation — rdfs:label —> '[label]', right
> ? So it crm:P1 cannot be equivalent to rdfs:label?
>
>
> I mean:
>
> An instance of E41 can have this property:
> E41 Appellation — rdfs:label —> '[label]', right ?
>
> So the crm:P1 property cannot be equivalent to rdfs:label, right?
>
>
> With my apologies
>
> Francesco
>
>
>
> _______________________________________________
> Crm-sig mailing
> listCrm-sig@ics.forth.grhttp://lists.ics.forth.gr/mailman/listinfo/crm-sig
>
>
>
> --
> ------------------------------------
> Dr. Martin Doerr
>
> Honorary Head of the
> Center for Cultural Informatics
>
> Information Systems Laboratory
> Institute of Computer Science
> Foundation for Research and Technology - Hellas (FORTH)
>
> N.Plastira 100, Vassilika Vouton,
> GR70013 Heraklion,Crete,Greece
>
> Vox:+30(2810)391625
> Email: mar...@ics.forth.gr
> Web-site: http://www.ics.forth.gr/isl
>
> _______________________________________________
> Crm-sig mailing list
> Crm-sig@ics.forth.gr
> http://lists.ics.forth.gr/mailman/listinfo/crm-sig
>
--
Rob Sanderson
Director for Cultural Heritage Metadata
Yale University
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:crm="http://www.cidoc-crm.org/cidoc-crm/" xml:lang="en" xml:base="http://www.cidoc-crm.org/cidoc-crm/">
<rdf:Property rdf:about="http://www.w3.org/2000/01/rdf-schema#label">
<rdfs:subPropertyOf rdf:resource="P1_is_identified_by" />
<!--
<rdfs:range rdf:resource="rdfs:Literal"/>
<rdfs:domain rdf:resource="rdfs:Resource"/>
-->
</rdf:Property>
<rdf:Property rdf:about="P1_is_identified_by">
<rdfs:domain rdf:resource="E1_CRM_Entity" />
<rdfs:range rdf:resource="E41_Appellation" />
</rdf:Property>
<rdfs:Class rdf:about="E1_CRM_Entity">
<rdfs:label xml:lang="en">CRM Entity</rdfs:label>
</rdfs:Class>
<rdfs:Class rdf:about="E41_Appellation">
<rdfs:subClassOf rdf:resource="E90_Symbolic_Object" />
</rdfs:Class>
<rdfs:Class rdf:about="E90_Symbolic_Object">
<!-- shortcut back to E1 for ease -->
<rdfs:subClassOf rdf:resource="E1_CRM_Entity"/>
</rdfs:Class>
<!-- Here our instance -->
<crm:E1_CRM_Entity rdf:about="http://example.com/1">
<rdfs:label>fish</rdfs:label>
</crm:E1_CRM_Entity>
</rdf:RDF>
_______________________________________________
Crm-sig mailing list
Crm-sig@ics.forth.gr
http://lists.ics.forth.gr/mailman/listinfo/crm-sig