[Crm-sig] Issue: Solution for Dualism of E41 Appellation and rdfs:label

Detlev Balzer db at balilabs.de
Tue Sep 4 22:11:31 EEST 2018


Am 04.09.2018 um 19:19 schrieb Robert Sanderson:
> 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.

Which ones do you mean? All the serializations I've seen make clear syntactic distinctions between literals and URIs.

While I agree that "punning" is bad practice, I don't see why it should confuse RDF software tools.

Detlev


Am 04.09.2018 um 19:19 schrieb Robert Sanderson:
>  
> 
> 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-bounces at ics.forth.gr> on behalf of Martin Doerr <martin at ics.forth.gr>
> *Date: *Saturday, September 1, 2018 at 7:41 AM
> *To: *crm-sig <Crm-sig at 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 :*
> 
> *I**dentifier*
> 
> 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: martin at ics.forth.gr <mailto:martin at 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           |
> 
> --------------------------------------------------------------
> 
> 
> 
> _______________________________________________
> Crm-sig mailing list
> Crm-sig at ics.forth.gr
> http://lists.ics.forth.gr/mailman/listinfo/crm-sig
> 

-- 
Detlev Balzer, Mecklenburger Landstr. 5, D-23570 Lübeck
Tel (+49/0)4502-8896495, Mobil (+49)0173-6231233
PGP Fingerprint B5F3 6467 0615 1EB4 B602 8E41 DE70 8D59 0A8B BBD7


More information about the Crm-sig mailing list