Запрос SPARQL и отличное количество

Лучший способ определить класс в JavaScript не состоит в том, чтобы определить класс.

Серьезно.

существует несколько различных разновидностей объектной ориентации, некоторые из них:

  • основанное на классах OO (сначала представленный Smalltalk)
  • основанное на прототипе OO (сначала представленный Сам)
  • основанное на мультиметоде OO (сначала представленный CommonLoops, я думаю)
  • основанное на предикате OO (никакая идея)

И вероятно другие я не знаю о.

JavaScript реализует основанное на прототипе OO. В основанном на прототипе OO новые объекты создаются путем копирования других объектов (вместо того, чтобы быть инстанцированными из шаблона класса) и методы, живые непосредственно в объектах вместо в классах. Наследование сделано через делегацию: если объект не имеет метода или свойства, он ищется на его прототипе (прототипах) (т.е. объект, он был клонирован от), то прототипы прототипа и так далее.

, Другими словами: нет никаких классов.

JavaScript на самом деле имеет хорошую тонкую настройку той модели: конструкторы. Мало того, что можно создать объекты путем копирования существующих, можно также создать их "из ничего", так сказать. Если Вы вызываете функцию с new ключевое слово, та функция становится конструктором и this, ключевое слово не укажет на текущий объект, но вместо этого на недавно созданный "пустой". Так, можно настроить объект любым путем, Вам нравится. Таким образом конструкторы JavaScript могут взять на себя одну из ролей классов в традиционном основанном на классах OO: служение в качестве шаблона или проекта новых объектов.

Теперь, JavaScript является очень мощным языком, таким образом, довольно легко реализовать основанную на классах систему OO в JavaScript, если Вы хотите. Однако необходимо только сделать это, если у Вас действительно есть потребность в нем и не только, потому что это - способ, которым Java делает это.

29
задан Jens Piegsa 3 August 2015 в 09:01
поделиться

1 ответ

Если вы используете Java и Jena ARQ, вы можете использовать расширения ARQ для агрегатов . Ваш запрос будет выглядеть примерно так:

SELECT ?tag (count(distinct ?tag) as ?count)
WHERE {
    ?r ns9:taggedWithTag ?tagresource.
    ?tagresource ns9:name ?tag
}
LIMIT 5000

Исходная спецификация SPARQL от 2008 года не включала агрегаты, но текущая версия 1.1 с 2013 года включает.

37
ответ дан 28 November 2019 в 01:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: