Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,804 changes: 1,804 additions & 0 deletions loama/data/dpv/dpv.ttl

Large diffs are not rendered by default.

559 changes: 559 additions & 0 deletions loama/data/dpv/sector-education.ttl

Large diffs are not rendered by default.

499 changes: 499 additions & 0 deletions loama/data/dpv/sector-finance.ttl

Large diffs are not rendered by default.

1,053 changes: 1,053 additions & 0 deletions loama/data/dpv/sector-health.ttl

Large diffs are not rendered by default.

531 changes: 531 additions & 0 deletions loama/data/dpv/sector-infra.ttl

Large diffs are not rendered by default.

1,050 changes: 1,050 additions & 0 deletions loama/data/dpv/sector-law.ttl

Large diffs are not rendered by default.

180 changes: 180 additions & 0 deletions loama/data/dpv/sector-publicservices.ttl
Original file line number Diff line number Diff line change
@@ -0,0 +1,180 @@
@prefix dct: <http://purl.org/dc/terms/> .
@prefix dpv: <https://w3id.org/dpv#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sector-publicservices: <https://w3id.org/dpv/sector/publicservices#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix sw: <http://www.w3.org/2003/06/sw-vocab-status/ns#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

sector-publicservices:HousingWelfareManagement a rdfs:Class,
skos:Concept,
dpv:Purpose ;
dct:created "2024-12-01"^^xsd:date ;
rdfs:isDefinedBy sector-publicservices: ;
sw:term_status "accepted"@en ;
skos:broader sector-publicservices:SocialAssistanceManagement ;
skos:definition "Purposes associated with management of housing as part of social assistance and welfare services"@en ;
skos:inScheme sector-publicservices:purposes-classes ;
skos:prefLabel "Housing Welfare Management"@en .

sector-publicservices:PublicServiceDistributionManagement a rdfs:Class,
skos:Concept,
dpv:Purpose ;
dct:created "2024-12-01"^^xsd:date ;
rdfs:isDefinedBy sector-publicservices: ;
sw:term_status "accepted"@en ;
skos:broader sector-publicservices:PublicServiceProvision ;
skos:definition "Purposes associated with managing the distribution in relation to public services, such as increasing, decreasing, granting, revoking, or reducing the service or related benefits"@en ;
skos:inScheme sector-publicservices:purposes-classes ;
skos:prefLabel "Public Service Distribution Management"@en .

sector-publicservices:PublicServiceEligibilityAssessment a rdfs:Class,
skos:Concept,
dpv:Purpose ;
dct:created "2024-12-01"^^xsd:date ;
rdfs:isDefinedBy sector-publicservices: ;
sw:term_status "accepted"@en ;
skos:broader sector-publicservices:PublicServiceManagement ;
skos:definition "Purposes associated with assessing the eligibility of a person to receive or continue to receive public services"@en ;
skos:inScheme sector-publicservices:purposes-classes ;
skos:prefLabel "Public Service Eligibility Assessment"@en .

sector-publicservices:PublicServiceFraudPreventionDetection a rdfs:Class,
skos:Concept,
dpv:Purpose ;
dct:created "2024-12-01"^^xsd:date ;
rdfs:isDefinedBy sector-publicservices: ;
sw:term_status "accepted"@en ;
skos:broader dpv:FraudPreventionAndDetection,
sector-publicservices:PublicServiceManagement ;
skos:definition "Purposes associated with fraud detection and prevention in relation to public services"@en ;
skos:inScheme sector-publicservices:purposes-classes ;
skos:prefLabel "Public Service Fraud Prevention Detection"@en .

sector-publicservices:PublicServiceManagement a rdfs:Class,
skos:Concept,
dpv:Purpose ;
dct:created "2024-12-01"^^xsd:date ;
rdfs:isDefinedBy sector-publicservices: ;
sw:term_status "accepted"@en ;
skos:broader dpv:PublicBenefit ;
skos:definition "Purposes associated with management of public services"@en ;
skos:inScheme sector-publicservices:purposes-classes ;
skos:prefLabel "Public Service Management"@en .

sector-publicservices:PublicServiceProvision a rdfs:Class,
skos:Concept,
dpv:Purpose ;
dct:created "2024-12-01"^^xsd:date ;
rdfs:isDefinedBy sector-publicservices: ;
sw:term_status "accepted"@en ;
skos:broader dpv:ServiceProvision,
sector-publicservices:PublicServiceManagement ;
skos:definition "Purposes associated with provision of public services"@en ;
skos:inScheme sector-publicservices:purposes-classes ;
skos:prefLabel "Public Service Provision"@en .

sector-publicservices:SocialAssistanceManagement a rdfs:Class,
skos:Concept,
dpv:Purpose ;
dct:created "2024-12-01"^^xsd:date ;
rdfs:isDefinedBy sector-publicservices: ;
sw:term_status "accepted"@en ;
skos:broader sector-publicservices:SocialWelfareManagement ;
skos:definition "Purposes associated with management of social assistance services"@en ;
skos:inScheme sector-publicservices:purposes-classes ;
skos:prefLabel "Social Assistance Management"@en .

sector-publicservices:SocialInsuranceManagement a rdfs:Class,
skos:Concept,
dpv:Purpose ;
dct:created "2024-12-01"^^xsd:date ;
rdfs:isDefinedBy sector-publicservices: ;
sw:term_status "accepted"@en ;
skos:broader sector-publicservices:SocialAssistanceManagement ;
skos:definition "Purposes associated with management of social insurance as part of social assistance and welfare services"@en ;
skos:inScheme sector-publicservices:purposes-classes ;
skos:prefLabel "Social Insurance Management"@en .

sector-publicservices:SocialSecurityManagement a rdfs:Class,
skos:Concept,
dpv:Purpose ;
dct:created "2024-12-01"^^xsd:date ;
rdfs:isDefinedBy sector-publicservices: ;
sw:term_status "accepted"@en ;
skos:broader sector-publicservices:SocialAssistanceManagement ;
skos:definition "Purposes associated with management of social security as part of social assistance and welfare services"@en ;
skos:inScheme sector-publicservices:purposes-classes ;
skos:prefLabel "Social Security Management"@en .

sector-publicservices:SocialWelfareDistributionManagement a rdfs:Class,
skos:Concept,
dpv:Purpose ;
dct:created "2024-12-01"^^xsd:date ;
rdfs:isDefinedBy sector-publicservices: ;
sw:term_status "accepted"@en ;
skos:broader sector-publicservices:SocialWelfareProvision ;
skos:definition "Purposes associated with managing the distribution in relation to social welfare, such as increasing, decreasing, granting, revoking, or reducing the service or related benefits"@en ;
skos:inScheme sector-publicservices:purposes-classes ;
skos:prefLabel "Social Welfare Distribution Management"@en .

sector-publicservices:SocialWelfareEligibilityAssessment a rdfs:Class,
skos:Concept,
dpv:Purpose ;
dct:created "2024-12-01"^^xsd:date ;
rdfs:isDefinedBy sector-publicservices: ;
sw:term_status "accepted"@en ;
skos:broader sector-publicservices:SocialWelfareManagement ;
skos:definition "Purposes associated with assessment of eligibility of a person to receive or continue to receive social welfare"@en ;
skos:inScheme sector-publicservices:purposes-classes ;
skos:prefLabel "Social Welfare Eligibility Assessment"@en .

sector-publicservices:SocialWelfareEnrolmentManagement a rdfs:Class,
skos:Concept,
dpv:Purpose ;
dct:contributor _:person-arthit-suriyawongkul,
_:person-harshvardhan-j-pandit ;
dct:created "2024-12-01"^^xsd:date ;
dct:modified "2025-08-06"^^xsd:date ;
rdfs:isDefinedBy sector-publicservices: ;
sw:term_status "modified"@en ;
skos:broader sector-publicservices:SocialWelfareManagement ;
skos:definition "Purposes associated with enrolment and managing enrolment of persons for the purposes of providing social welfare"@en ;
skos:inScheme sector-publicservices:purposes-classes ;
skos:prefLabel "Social Welfare Enrolment Management"@en .

sector-publicservices:SocialWelfareManagement a rdfs:Class,
skos:Concept,
dpv:Purpose ;
dct:created "2024-12-01"^^xsd:date ;
rdfs:isDefinedBy sector-publicservices: ;
sw:term_status "accepted"@en ;
skos:broader sector-publicservices:PublicServiceManagement ;
skos:definition "Purposes associated with management of social welfare"@en ;
skos:inScheme sector-publicservices:purposes-classes ;
skos:prefLabel "Social Welfare Management"@en .

sector-publicservices:SocialWelfareProvision a rdfs:Class,
skos:Concept,
dpv:Purpose ;
dct:created "2024-12-01"^^xsd:date ;
rdfs:isDefinedBy sector-publicservices: ;
sw:term_status "accepted"@en ;
skos:broader sector-publicservices:PublicServiceProvision,
sector-publicservices:SocialWelfareManagement ;
skos:definition "Purposes associated with provision of social welfare"@en ;
skos:inScheme sector-publicservices:purposes-classes ;
skos:prefLabel "Social Welfare Provision"@en .

sector-publicservices:SocialWelfareRiskAssessment a rdfs:Class,
skos:Concept,
dpv:Purpose ;
dct:created "2024-12-01"^^xsd:date ;
rdfs:isDefinedBy sector-publicservices: ;
sw:term_status "accepted"@en ;
skos:broader dpv:FraudPreventionAndDetection,
dpv:OrganisationRiskManagement,
sector-publicservices:SocialWelfareManagement ;
skos:definition "Purposes associated with conducting risk and impact assessments in relation to use of social welfare"@en ;
skos:inScheme sector-publicservices:purposes-classes ;
skos:prefLabel "Social Welfare Risk Assessment"@en .
2 changes: 2 additions & 0 deletions loama/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
"loama-app": "^1.0.0",
"loama-common": "^1.0.0",
"loama-controller": "^1.0.0",
"n3": "^1.26.0",
"pinia": "^2.2.2",
"primevue": "^4.1.1",
"tom-select": "^2.6.2",
Expand All @@ -40,6 +41,7 @@
"@playwright/test": "^1.50.1",
"@rushstack/eslint-patch": "^1.8.0",
"@tsconfig/node20": "^20.1.4",
"@types/n3": "^1",
"@types/node": "^20.14.5",
"@vitejs/plugin-vue": "^5.0.5",
"@vue/eslint-config-prettier": "^9.0.0",
Expand Down
29 changes: 14 additions & 15 deletions loama/src/components/access-requests/AccessRequest.vue
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,14 @@ import { computed, onBeforeUnmount, onMounted, ref, type Ref } from 'vue';
import type { AccessRequest, Constraint } from 'loama-controller';
import AccessRequestEntry from './AccessRequestEntry.vue';
import { useControllerStore } from '@/stores/useControllerStore';
import { PURPOSES } from '@/lib/Purposes';
import { loadPurposes, PURPOSES } from '@/lib/Purposes';
import { useTomSelectMultiple } from '@/lib/Usetomselect'
import 'tom-select/dist/css/tom-select.css';

const controllerStore = useControllerStore();

const accessRequests: Ref<AccessRequest[]> = ref([]);
const purposesLoaded = ref(false);

const accessRequestParams = ref({
target: '',
Expand All @@ -33,9 +34,12 @@ useTomSelectMultiple(purposeSelectEl, purposesModel, purposesEditable, {
labelField: 'name',
valueField: 'value',
searchField: ['name', 'desc', 'value'],
placeholder: 'Search purposes or enter a custom IRI…',
create: true,
render: {
optgroup_header: (data: { label: string }) => `<div class="optgroup-header">${data.label}</div>`,
option: (data: { name: string; desc: string }) => `<div><strong>${data.name}</strong><div>${data.desc}</div></div>`,
option: (data: { name: string; desc?: string }) =>
`<div><strong>${data.name}</strong>${data.desc ? `<div>${data.desc}</div>` : ''}</div>`,
},
});

Expand All @@ -60,22 +64,14 @@ const clear = () => {

const addAccessRequest = async () => {
if (!validate()) return;

const constraints: Constraint[] = [];

accessRequestParams.value.purposes.forEach(purpose => {
constraints.push({
leftOperand: 'http://www.w3.org/ns/odrl/2/purpose',
operator: 'http://www.w3.org/ns/odrl/2/eq',
rightOperand: purpose.startsWith('http')
? [purpose]
: (() => {
const [groupValue, ...termParts] = purpose.split(':');
const term = termParts.join(':');
const matchedGroup = PURPOSES.groups.find((g) => g.value === groupValue);
const prefix = matchedGroup ? matchedGroup.prefix : 'https://w3id.org/dpv#';
return [`${prefix}${term}`];
})()
rightOperand: [purpose]
});
});

Expand All @@ -96,7 +92,7 @@ const addAccessRequest = async () => {
rightOperand: [`"${endIso}"^^http://www.w3.org/2001/XMLSchema#:dateTime`]
});
}

await controllerStore.current.requestAccess({
accessRequest: {
uid: `http://example.org/request/${crypto.randomUUID()}`,
Expand All @@ -119,6 +115,8 @@ const fetchAccessRequests = async (): Promise<void> => {
let interval: NodeJS.Timeout;

onMounted(async () => {
await loadPurposes();
purposesLoaded.value = true;
await fetchAccessRequests();
interval = setInterval(fetchAccessRequests, 10 ** 4);
});
Expand Down Expand Up @@ -155,7 +153,8 @@ onBeforeUnmount(() => clearInterval(interval));
</select>

<label for="purpose">Purpose</label>
<select name="purpose" id="purpose" ref="purposeSelectEl" multiple></select>
<select v-if="purposesLoaded" name="purpose" id="purpose" ref="purposeSelectEl" multiple></select>
<input v-else id="purpose" value="Loading purposes..." disabled />

<label for="StartTime">Start Time</label>
<input type="datetime-local" id="StartTime" v-model="accessRequestParams.startTime">
Expand Down Expand Up @@ -425,4 +424,4 @@ button.secondary:hover {
opacity: 0;
transform: translateY(-10px);
}
</style>
</style>
Loading