CARVIEW |
Select Language
HTTP/2 200
date: Sun, 27 Jul 2025 06:09:41 GMT
content-type: text/html; charset=utf-8
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With
x-robots-tag: none
etag: W/"c7b0a7f51ca9346e7c56b1330c206a00"
cache-control: max-age=0, private, must-revalidate
strict-transport-security: max-age=31536000; includeSubdomains; preload
x-frame-options: deny
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: no-referrer-when-downgrade
content-security-policy: default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/
server: github.com
content-encoding: gzip
accept-ranges: bytes
set-cookie: _gh_sess=YzLCTkdvABzf05vxH39TITao5fSXNULQ%2F0%2FdqSFepiV6x25uLots6PeCsNK%2BAKChctYp7GEJabXwoPjheHoU4U6XqTBeQSE5aSxpyCJz%2B8gEUOkCNGWlPkYbFDeGR93GDJrXReIrHeoRbCEpMo4ij5VIk0VK0kZrwT4auzDCIxicj3RLFlKv4jW%2B95PmLbSnIA2z1mrLP8HqgNfisZ%2F2pssmwTQbX22Zf8bZSNmL%2FNr498lQpq1ZmG%2BSndC7jkXe%2FShposU5nMlJrt2eeAisfA%3D%3D--GmzMkQ4aZKMGDJFB--3fzZV99Mxrsetwo7Um2Gzw%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.428573129.1753596580; Path=/; Domain=github.com; Expires=Mon, 27 Jul 2026 06:09:40 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Mon, 27 Jul 2026 06:09:40 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: C02C:29054:1A98DF:25D64E:6885C2A4
Lesson 2 The Grouping operator · dbs-leipzig/gradoop-tutorial Wiki · GitHub
Skip to content
Navigation Menu
{{ message }}
-
Notifications
You must be signed in to change notification settings - Fork 0
Lesson 2 The Grouping operator
Christopher Rost edited this page Sep 4, 2020
·
5 revisions
Have a look at the Wiki pages of Gradoop for further details about this operator. There are several pre-defined aggregations available.
All labels start with a lowercase letter in our dataset, so please use 'person' instead of 'Person' in your tasks.
- Create a schema graph by grouping vertices and edges by the label.
- How many vertices and edges exist per label?
Some help
- The class
GroupingKeys
offers pre-defined key functions.
Solution
graph = graph.callForGraph(
new KeyedGrouping<>(
Arrays.asList(GroupingKeys.label()),
Arrays.asList(new Count()),
Arrays.asList(GroupingKeys.label()),
Arrays.asList(new Count())
)
);
- How many males and females are there? What is the average age per gender?
- How many males know women and vice versa?
- How many male and female people study at universities per class year?
You already have a subgraph with
person
anduniversity
nodes andknows
andstudyAt
edges.
All person vertices have now an additional property
age
as Integer.
Some help
- Use
GroupingKeys.property("myProperty")
to group on a property. - Use the aggregate
new AverageProperty("myProperty")
to calculate the average of a numerical value.
Solution
graph = graph.callForGraph(
new KeyedGrouping<>(
Arrays.asList(GroupingKeys.label(), GroupingKeys.property("gender")),
Arrays.asList(new Count(), new AverageProperty("age")),
Arrays.asList(GroupingKeys.label(), GroupingKeys.property("classYear")),
Arrays.asList(new Count())
)
);
- How many people are born on the same weekday (Mon – Sun)? You have to create a UDF that extracts the day from the property
birthday
. - How old is the youngest and oldest person in the group?
- How many know each other from these groups?
You already have a subgraph with
person
nodes andknows
edges.
All person vertices have now an additional property
age
as Integer.
Some help
- Use the aggregate
new MinProperty("myProperty")
to calculate the minimum of a numerical value. - Use the aggregate
new MaxProperty("myProperty")
to calculate the maximum of a numerical value. - You can check the availability of a property by
vertex.hasProperty("myProperty")
. - You get the value of a propety by calling
vertex.getPropertyValue("myProperty").get{dataType}()
- The Class
LocalDate
offers a function.getDayOfWeek().name()
to get the name of the weekday as string.
Solution
graph = graph.callForGraph(
new KeyedGrouping<>(
Arrays.asList(GroupingKeys.label(), new GetYearOfDate<>()),
Arrays.asList(new Count(), new MinProperty("age"), new MaxProperty("age")),
Arrays.asList(GroupingKeys.label()),
Arrays.asList(new Count())
)
);
private static class GetYearOfDate<V extends Vertex> implements KeyFunction<V, String> {
@Override
public String getKey(V vertex) {
String dayOfWeek = "unknown";
if (vertex.hasProperty("birthday")) {
dayOfWeek = vertex.getPropertyValue("birthday").getDate().getDayOfWeek().name();
}
return dayOfWeek;
}
...
}
Clone this wiki locally
You can’t perform that action at this time.