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

Eliminate the redefinition of properties of common vocabularies #225

Open
15 tasks
cristianvasquez opened this issue Feb 1, 2024 · 3 comments
Open
15 tasks
Labels
type: feature request something requested to be implemented in a future release
Milestone

Comments

@cristianvasquez
Copy link

cristianvasquez commented Feb 1, 2024

Some values of properties from external vocabularies are being rewritten, and need to be removed.

Examples of such properties are: rdfs:range or rdfs:domain

This can pose difficulties in the case of using the vocabularies together as one graph

I'm linking a list of triples that were redefined in this gist, it might serve as a reference for this task. Also the original values

The list was extracted from a set of vocabularies in a triplestore using this query:

SELECT distinct ?graph ?s ?p ?o
WHERE {
  graph ?graph {
    ?s a ?type .
    ?s ?p ?o .
    FILTER (isIRI(?o)) .
  }
}

The list of vocabularies taken into account:

@costezki
Copy link
Collaborator

costezki commented Feb 2, 2024

There was a discussion about how to reuse the external vocabularies. While I believe that lexical adaptations should be discouraged, I have discovered that this is a practice in the semantic standardisation community, including the ePO working group.

How the lexical adaptations can be implemented is described in the SEMIC style guide: for classes,
for properties.

@costezki costezki added the type: feature request something requested to be implemented in a future release label Feb 2, 2024
@cristianvasquez
Copy link
Author

Hi, thank you for noticing.

Lexical adaptations are useful indeed.
I've relaxed the list of elements to remove, and I'll update the issue description

@cristianvasquez
Copy link
Author

One option to implement this is a CONSTRUCT over the dataset that filters out things with Subject from known vocabularies.

This can be applied as post-processing

PREFIX ns1: <http://www.w3.org/2006/time#>
PREFIX ns2: <http://www.w3.org/ns/locn#>
PREFIX ns3: <http://www.w3.org/ns/org#>
PREFIX ns4: <http://www.w3.org/ns/person#>
PREFIX ns5: <http://www.w3.org/ns/adms#>
PREFIX ns6: <http://www.w3.org/2004/02/skos/core#>
PREFIX ns7: <http://www.w3.org/2002/07/owl#>
PREFIX ns8: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX ns9: <http://xmlns.com/foaf/spec/index.rdf>
PREFIX ns10: <http://data.europa.eu/m8g/>
PREFIX ns11: <http://purl.org/dc/terms/>
PREFIX ns12: <http://www.w3.org/ns/dcat#>
PREFIX ns13: <http://www.w3.org/2002/07/owl#>
PREFIX ns14: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX ns15: <http://www.w3.org/2000/01/rdf-schema#>

CONSTRUCT {
  ?s ?p ?o
}
WHERE {
  GRAPH ?graph {
    ?s ?p ?o
    FILTER (isURI(?s) && 
            !(STRSTARTS(str(?s), str(ns1:)) ||
              STRSTARTS(str(?s), str(ns2:)) ||
              STRSTARTS(str(?s), str(ns3:)) ||
              STRSTARTS(str(?s), str(ns4:)) ||
              STRSTARTS(str(?s), str(ns5:)) ||
              STRSTARTS(str(?s), str(ns6:)) ||
              STRSTARTS(str(?s), str(ns7:)) ||
              STRSTARTS(str(?s), str(ns8:)) ||
              STRSTARTS(str(?s), str(ns9:)) ||
              STRSTARTS(str(?s), str(ns10:)) ||
              STRSTARTS(str(?s), str(ns11:)) ||
              STRSTARTS(str(?s), str(ns12:)) ||
              STRSTARTS(str(?s), str(ns13:)) ||
              STRSTARTS(str(?s), str(ns14:)) ||
              STRSTARTS(str(?s), str(ns15:)))
           )
  }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type: feature request something requested to be implemented in a future release
Projects
None yet
Development

No branches or pull requests

3 participants