Skip to content
This repository has been archived by the owner on Feb 21, 2023. It is now read-only.

[FEATURE-REQUEST] Add languageFilter to criteria #11

Open
leipert opened this issue Jun 30, 2014 · 1 comment
Open

[FEATURE-REQUEST] Add languageFilter to criteria #11

leipert opened this issue Jun 30, 2014 · 1 comment

Comments

@leipert
Copy link
Contributor

leipert commented Jun 30, 2014

store.addMap({
    name: 'castles',
    template: [{
        id: '?s',
        name: '?l'
    }],
    from: '?s a dbpedia-owl:Castle ; rdfs:label ?l ; '
});

var criteria = {name: {$regex: filterText, $lang: "en"}};

looks much better than

store.addMap({
    name: 'castles',
    template: [{
        id: '?s',
        name: '?l'
    }],
    from: '?s a dbpedia-owl:Castle ; rdfs:label ?l ; '
         + 'Filter(langMatches(lang(?l), "en"))'
});

var criteria = {name: {$regex: filterText}};
@leipert
Copy link
Contributor Author

leipert commented Aug 5, 2014

@Aklakan I propose the following structure for a sponate language filter. Imagine you have the following JSON result from a SPARQL request:

{
   "head": {
      "link": [],
      "vars": ["id", "a", "b", "c"]
   },
   "results": {
      "distinct": false,
      "ordered": true,
      "bindings": [
         {
           "id": { "type": "uri", "value": "http://e.org/a" },
           "a":  { "type": "literal", "value": "No Language" },
           "b":  { "type": "literal", "xml:lang": "de", "value": "Deutsch" },
           "c":  { "type": "literal", "xml:lang": "en", "value": "Only en" }
         },
         {
           "id": { "type": "uri", "value": "http://e.org/a" },
           "a":  { "type": "literal", "value": "No Language" },
           "b":  { "type": "literal", "xml:lang": "en", "value": "Englisch" },
           "c":  { "type": "literal", "xml:lang": "en", "value": "Only en" }
         },
      ]
   }
}

Only one language:

var langFilter = {$lang: 'de'}
var criteria = {a: langFilter, b: langFilter, c: langFilter}
var flow = store.example.find(criteria)
flow.asList()
    .done(function(docs) {
        console.log(docs);
    });
// Prints
// [{id: "http://e.org/a", a: null, b: "Deutsch", c: null}]

Multiple Languages in prefered order:

var langFilter = {$lang: ['de','en']}
var criteria = {a: langFilter, b: langFilter, c: langFilter}
var flow = store.example.find(criteria)
flow.asList()
    .done(function(docs) {
        console.log(docs);
    });
// Prints
// [{id: "http://e.org/a", a: null, b: "Deutsch", c: "Only en"}]

With wildcard:

var langFilter = {$lang: ['de','en','*']}
var criteria = {a: langFilter, b: langFilter, c: langFilter}
var flow = store.example.find(criteria)
flow.asList()
    .done(function(docs) {
        console.log(docs);
    });
// Prints
// [{id: "http://e.org/a", a: "No Language", b: "Deutsch", c: "Only en"}]

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant