Dear all,

Please no!  This is called “punning” (when the same property can be have both 
literals and resources as its range) and is widely recognized as a bad practice 
in RDF.

In particular, it makes it difficult in several serializations to distinguish 
between the string “http://example.museum.org/data/1” and the resource that has 
the URI http://example.museum.org/data/1 as its identifier.

Rob


From: Crm-sig <crm-sig-boun...@ics.forth.gr> on behalf of Martin Doerr 
<mar...@ics.forth.gr>
Date: Saturday, September 1, 2018 at 7:41 AM
To: crm-sig <Crm-sig@ics.forth.gr>
Subject: [Crm-sig] Issue: Solution for Dualism of E41 Appellation and rdfs:label

Dear All,

Obviously, there are two ways in RDF to express what the CRM regards as an 
Appellation: Either using a URI, instance of E41, and then another property 
specifying in whatever way the symbolic content (I am not concerned with this 
here), OR using rdfs:label, which has exactly the meaning of some forms of 
Appellation that can be expressed exhaustively as literal.

Interesting enough, there seems to be no existing validation method, that would 
exclude any instance of xsd Datatype to be used as range of rdfs:label.

We have made therefor the following tests with Virtuoso, if P1 can have two 
ranges, Literal and E41, and if SPARQL gives the expected answers, it does:



1.      Dualism of Appellations
The purpose of this is to provide an RDF based technical solution for 
representing and querying a property which can be at the same time Data and 
Object type regardless of the fact that it violates the respective constraints 
or rules.
Practically we can have three options of representing appellations. By taking 
the example of Alexander the Great with supposed URI: 
http://example.com/person/alexander_the_great we can do the following:

1)      Use the “P1 is identified by” property and an instance of E41 
Appellation class:



<http://example.com/person/alexander_the_great><http://example.com/person/alexander_the_great>

crm:P1_is_identified_by

<http://example.com/appellation/alexander_the_great><http://example.com/appellation/alexander_the_great>
 .



<http://example.com/appellation/alexander_the_great><http://example.com/appellation/alexander_the_great>

rdfs:label

"Alexander the Great" .



2)      Use directly the rdfs:label:

<http://example.com/person/alexander_the_great><http://example.com/person/alexander_the_great>

rdfs:label

"Alexander the Great" .



3)      Use the “P1 is identified by” property as a data property (violating 
the rdfs definitions):

<http://example.com/person/alexander_the_great><http://example.com/person/alexander_the_great>

crm:P1_is_identified_by

"Alexander the Great" .


Based on these examples the following steps were followed to test the practical 
application of such cases to a triple store. Virtuoso triple store was used for 
the following examples.

1.       The cidoc_crm.rdfs was altered to include the following:
<rdf:Property rdf:about="P1_is_identified_by">
                                 <rdfs:label xml:lang="en">is identified 
by</rdfs:label>
                                <rdfs:domain rdf:resource="E1_CRM_Entity"/>
                                <rdfs:range rdf:resource="E41_Appellation"/>
</rdf:Property>
<rdf:Property rdf:about="P1_is_identified_by">
<rdfs:label xml:lang="en">is identified by</rdfs:label>
                                <rdfs:domain rdf:resource="E1_CRM_Entity"/>
                                <rdfs:range 
rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal";<http://www.w3.org/2000/01/rdf-schema#Literal>/>
</rdf:Property>

So,  an is identified property was added to the initial schema but with 
rdfs:Literal as a range.


2.       The cidoc crm schema was uploaded in virtuoso and the following query 
(give me the range of P1_is_identified_property) was executed to be sure that 
the changes have been applied:



prefix crm: 
<http://www.cidoc-crm.org/cidoc-crm/><http://www.cidoc-crm.org/cidoc-crm/>

prefix rdfs: 
<http://www.w3.org/2000/01/rdf-schema#><http://www.w3.org/2000/01/rdf-schema>



select * where { crm:P1_is_identified_by rdfs:range ?range}



result:
range

http://www.cidoc-crm.org/cidoc-crm/E41_Appellation

http://www.w3.org/2000/01/rdf-schema#Literal




So, it is confirmed that the two ranges have been added. I repeat at this point 
that Virtuoso does not apply any semantic validation. The purpose of this test 
is to prove that this exercise is possible even though conceptually it may not 
be correct.



3.       The ttl data that was presented previously has been added in virtuoso:



@prefix rdfs: 
<http://www.w3.org/2000/01/rdf-schema#><http://www.w3.org/2000/01/rdf-schema> .

@prefix rdf: 
<http://www.w3.org/1999/02/22-rdf-syntax-ns#><http://www.w3.org/1999/02/22-rdf-syntax-ns>
 .

@prefix crm: 
<http://www.cidoc-crm.org/cidoc-crm/><http://www.cidoc-crm.org/cidoc-crm/> .



<http://example.com/person/alexander_the_great><http://example.com/person/alexander_the_great>

crm:P1_is_identified_by 
<http://example.com/appellation/alexander_the_great><http://example.com/appellation/alexander_the_great>
 .



<http://example.com/appellation/alexander_the_great><http://example.com/appellation/alexander_the_great>

rdfs:label  "Alexander the Great" .



<http://example.com/person/alexander_the_great>

rdfs:label  "Alexander the Great" .



<http://example.com/person/alexander_the_great><http://example.com/person/alexander_the_great>

crm:P1_is_identified_by  "Alexander the Great" .



4.       A query to return all the “identifiers” of alexander the great using 
the is identified property was applied:
prefix crm: 
<http://www.cidoc-crm.org/cidoc-crm/><http://www.cidoc-crm.org/cidoc-crm/>
prefix rdfs: 
<http://www.w3.org/2000/01/rdf-schema#><http://www.w3.org/2000/01/rdf-schema>
select * where
{ 
<http://example.com/person/alexander_the_great><http://example.com/person/alexander_the_great>
  crm:P1_is_identified_by ?identifier }
result:
identifier

http://example.com/appellation/alexander_the_great

Alexander the Great


So, it is obvious that with the same query both the literal and the uri values 
are returned.
A version of the above query to return also the appellation’s label (but not 
the uri) is the following:
prefix crm: 
<http://www.cidoc-crm.org/cidoc-crm/><http://www.cidoc-crm.org/cidoc-crm/>
prefix rdfs: 
<http://www.w3.org/2000/01/rdf-schema#><http://www.w3.org/2000/01/rdf-schema>
select ?identifier
where {
{<http://example.com/person/alexander_the_great><http://example.com/person/alexander_the_great>
  crm:P1_is_identified_by ?identifier }
UNION
{<http://example.com/person/alexander_the_great><http://example.com/person/alexander_the_great>
  crm:P1_is_identified_by ?identifier_uri .
?identifier_uri  rdfs:label ?identifier }
FILTER (!isURI(?identifier))
}
With the following result :
Identifier

Alexander the Great

Alexander the Great




The next question is, if P1 can be declared superproperty of rdfs:label, so 
that the query for P1 returns everything CRM regards as Appellation. It works:


It was tested by altering the cidoc-crm rdfs file, importing it in virtuoso and 
asking for the subproperties of rdfs:label as follows:
<rdf:Property rdf:about="P1_is_identified_by">
    <rdfs:label xml:lang="en">is identified by</rdfs:label>
    <rdfs:label xml:lang="ru">идентифицируется посредством</rdfs:label>
    <rdfs:label xml:lang="fr">est identifiée par</rdfs:label>
    <rdfs:label xml:lang="pt">é identificado por</rdfs:label>
    <rdfs:domain rdf:resource="E1_CRM_Entity"/>
     <rdfs:range rdf:resource="E41_Appellation"/>
     <rdfs:subPropertyOf 
rdf:resource="http://www.w3.org/2000/01/rdf-schema#label";<http://www.w3.org/2000/01/rdf-schema#label>/>
</rdf:Property>
Query (Give me all the subproperties of rdfs:label) :
select * where {
?p rdfs:subPropertyOf rdfs:label
}
Result from Virtuoso:
p:
http://www.cidoc-crm.org/cidoc-crm/P1_is_identified_by

I propose this method for the RDFS implementation of the CRM: two ranges for 
P1, namely E41 and rdf:Literal, and P1 superproperty of rdfs:label.
Best,

Martin

--

--------------------------------------------------------------

 Dr. Martin Doerr              |  Vox:+30(2810)391625        |

 Research Director             |  Fax:+30(2810)391638        |

                               |  Email: 
mar...@ics.forth.gr<mailto:mar...@ics.forth.gr> |

                                                             |

               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               |

                                                             |

             Web-site: http://www.ics.forth.gr/isl           |

--------------------------------------------------------------

Reply via email to