@prefix : <https://www.linkedin.com/pulse/power-layered-knowledge-graphs-applied-real-estate-adamchic-phd-vv4df/#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix prov: <http://www.w3.org/ns/prov#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix schema: <http://schema.org/> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

:BuildingEquipment a rdfs:Class ;
    rdfs:label "BuildingEquipment"@en ;
    schema:description "Equipment installed in or serving a building."@en ;
    schema:name "BuildingEquipment"@en ;
    rdfs:comment "Equipment installed in or serving a building."@en ;
    rdfs:isDefinedBy :ontology .

:ComparisonDimension a rdfs:Class ;
    rdfs:label "ComparisonDimension"@en ;
    schema:description "A criterion used to compare the two graph architectures."@en ;
    schema:name "ComparisonDimension"@en ;
    rdfs:comment "A criterion used to compare the two graph architectures."@en ;
    rdfs:isDefinedBy :ontology .

:EvidenceDocument a rdfs:Class ;
    rdfs:label "EvidenceDocument"@en ;
    schema:description "A source document that supports a validation decision."@en ;
    schema:name "EvidenceDocument"@en ;
    rdfs:comment "A source document that supports a validation decision."@en ;
    rdfs:isDefinedBy :ontology ;
    rdfs:subClassOf schema:CreativeWork .

:GraphArchitecture a rdfs:Class ;
    rdfs:label "GraphArchitecture"@en ;
    schema:description "A graph-platform architecture participating in the comparison."@en ;
    schema:name "GraphArchitecture"@en ;
    rdfs:comment "A graph-platform architecture participating in the comparison."@en ;
    rdfs:isDefinedBy :ontology .

:GraphLayer a rdfs:Class ;
    rdfs:label "GraphLayer"@en ;
    schema:description "A logical layer of the real-estate knowledge system."@en ;
    schema:name "GraphLayer"@en ;
    rdfs:comment "A logical layer of the real-estate knowledge system."@en ;
    rdfs:isDefinedBy :ontology .

:HeatPump a rdfs:Class ;
    rdfs:label "HeatPump"@en ;
    schema:description "A heat-pump asset used for building heating or cooling."@en ;
    schema:name "HeatPump"@en ;
    rdfs:comment "A heat-pump asset used for building heating or cooling."@en ;
    rdfs:isDefinedBy :ontology ;
    rdfs:subClassOf :BuildingEquipment ;
    owl:equivalentClass :heatPumpConcept .

:InvoiceLineItem a rdfs:Class ;
    rdfs:label "InvoiceLineItem"@en ;
    schema:description "A named line item on an invoice."@en ;
    schema:name "InvoiceLineItem"@en ;
    rdfs:comment "A named line item on an invoice."@en ;
    rdfs:isDefinedBy :ontology .

:PlatformCapability a rdfs:Class ;
    rdfs:label "PlatformCapability"@en ;
    schema:description "A graph-platform capability demonstrated or described in the comparison."@en ;
    schema:name "PlatformCapability"@en ;
    rdfs:comment "A graph-platform capability demonstrated or described in the comparison."@en ;
    rdfs:isDefinedBy :ontology .

:RetrievalCandidate a rdfs:Class ;
    rdfs:label "RetrievalCandidate"@en ;
    schema:description "A candidate ontology term selected by graph patterns and instance evidence."@en ;
    schema:name "RetrievalCandidate"@en ;
    rdfs:comment "A candidate ontology term selected by graph patterns and instance evidence."@en ;
    rdfs:isDefinedBy :ontology .

:RetrievalExecution a rdfs:Class ;
    rdfs:label "RetrievalExecution"@en ;
    schema:description "A provenance-bearing execution or reproducible result of a retrieval mode."@en ;
    schema:name "RetrievalExecution"@en ;
    rdfs:comment "A provenance-bearing execution or reproducible result of a retrieval mode."@en ;
    rdfs:isDefinedBy :ontology .

:RetrievalMode a rdfs:Class ;
    rdfs:label "RetrievalMode"@en ;
    schema:description "A defined method for retrieving or ranking knowledge-graph entities."@en ;
    schema:name "RetrievalMode"@en ;
    rdfs:comment "A defined method for retrieving or ranking knowledge-graph entities."@en ;
    rdfs:isDefinedBy :ontology .

:ValidationFinding a rdfs:Class ;
    rdfs:label "ValidationFinding"@en ;
    schema:description "A named result produced by evaluating a validation rule."@en ;
    schema:name "ValidationFinding"@en ;
    rdfs:comment "A named result produced by evaluating a validation rule."@en ;
    rdfs:isDefinedBy :ontology ;
    rdfs:subClassOf schema:Review .

:ValidationRule a rdfs:Class ;
    rdfs:label "ValidationRule"@en ;
    schema:description "A deterministic constraint or graph rule evaluated against business evidence."@en ;
    schema:name "ValidationRule"@en ;
    rdfs:comment "A deterministic constraint or graph rule evaluated against business evidence."@en ;
    rdfs:isDefinedBy :ontology .

:buildingConcept a rdfs:Class ;
    schema:description "Shared building concept aligned across the real-estate and building-equipment domains."@en ;
    schema:name "Building"@en ;
    rdfs:isDefinedBy :ontology ;
    :inLayer :ontologyLayer .

:heatPumpConcept a rdfs:Class ;
    schema:description "Building equipment that transfers heat for heating or cooling."@en ;
    schema:name "Heat pump"@en ;
    rdfs:isDefinedBy :ontology ;
    rdfs:subClassOf :buildingConcept ;
    :inLayer :ontologyLayer .

:invoiceConcept a rdfs:Class ;
    schema:description "Commercial document requesting payment for supplied goods or services."@en ;
    schema:name "Invoice"@en ;
    rdfs:isDefinedBy :ontology ;
    :inLayer :ontologyLayer .

:legalRequirementConcept a rdfs:Class ;
    schema:description "Requirement grounded in an identified legal or regulatory source."@en ;
    schema:name "Legal requirement"@en ;
    rdfs:isDefinedBy :ontology ;
    :inLayer :ontologyLayer .

:serviceContractConcept a rdfs:Class ;
    schema:description "Agreement defining covered maintenance and diagnostic services."@en ;
    schema:name "Service contract"@en ;
    rdfs:isDefinedBy :ontology ;
    :inLayer :ontologyLayer .

:warrantyConcept a rdfs:Class ;
    schema:description "Commitment covering qualifying equipment defects or services during a defined period."@en ;
    schema:name "Warranty"@en ;
    rdfs:isDefinedBy :ontology ;
    :inLayer :ontologyLayer .

:calloutCeilingShape a sh:NodeShape ;
    schema:about :ruleCalloutCeiling ;
    schema:description "Invoice total should not exceed the contracted call-out ceiling."@en ;
    schema:name "Call-out ceiling shape"@en ;
    sh:sparql :calloutCeilingShapeConstraint ;
    sh:targetClass schema:Invoice ;
    :inLayer :rulesLayer .

:coveredServiceShape a sh:NodeShape ;
    schema:about :ruleCoveredDiagnostic ;
    schema:description "Covered diagnostic service must not be billed as a separate charge."@en ;
    schema:name "Covered-service billing shape"@en ;
    sh:sparql :coveredServiceShapeConstraint ;
    sh:targetClass schema:Invoice ;
    :inLayer :rulesLayer .

:duplicateInvoiceShape a sh:NodeShape ;
    schema:about :ruleDuplicateIdentifier ;
    schema:description "Supplier invoice identifiers should be unique."@en ;
    schema:name "Duplicate invoice identifier shape"@en ;
    sh:sparql :duplicateInvoiceShapeConstraint ;
    sh:targetClass schema:Invoice ;
    :inLayer :rulesLayer .

:evaluatesRule a rdf:Property ;
    rdfs:label "evaluatesRule"@en ;
    schema:description "Links a finding to its evaluated validation rule."@en ;
    schema:name "evaluatesRule"@en ;
    rdfs:comment "Links a finding to its evaluated validation rule."@en ;
    rdfs:domain :ValidationFinding ;
    rdfs:isDefinedBy :ontology ;
    rdfs:range :ValidationRule .

:expectedAmount a rdf:Property ;
    rdfs:label "expectedAmount"@en ;
    schema:description "Expected monetary amount derived from contract or line-item evidence."@en ;
    schema:name "expectedAmount"@en ;
    rdfs:comment "Expected monetary amount derived from contract or line-item evidence."@en ;
    rdfs:domain rdfs:Resource ;
    rdfs:isDefinedBy :ontology ;
    rdfs:range xsd:decimal .

:findingStatus a rdf:Property ;
    rdfs:label "findingStatus"@en ;
    schema:description "Records Pass, Warning, or Fail for a validation finding."@en ;
    schema:name "findingStatus"@en ;
    rdfs:comment "Records Pass, Warning, or Fail for a validation finding."@en ;
    rdfs:domain :ValidationFinding ;
    rdfs:isDefinedBy :ontology ;
    rdfs:range xsd:string .

:focusNode a rdf:Property ;
    rdfs:label "focusNode"@en ;
    schema:description "Identifies the primary business entity evaluated by a finding."@en ;
    schema:name "focusNode"@en ;
    rdfs:comment "Identifies the primary business entity evaluated by a finding."@en ;
    rdfs:domain :ValidationFinding ;
    rdfs:isDefinedBy :ontology ;
    rdfs:range rdfs:Resource .

:hasEvidence a rdf:Property ;
    rdfs:label "hasEvidence"@en ;
    schema:description "Links a finding to the evidence that supports it."@en ;
    schema:name "hasEvidence"@en ;
    rdfs:comment "Links a finding to the evidence that supports it."@en ;
    rdfs:domain :ValidationFinding ;
    rdfs:isDefinedBy :ontology ;
    rdfs:range rdfs:Resource .

:implementsArchitecture a rdf:Property ;
    rdfs:label "implementsArchitecture"@en ;
    schema:description "Associates an execution or component with its graph architecture."@en ;
    schema:name "implementsArchitecture"@en ;
    rdfs:comment "Associates an execution or component with its graph architecture."@en ;
    rdfs:domain rdfs:Resource ;
    rdfs:isDefinedBy :ontology ;
    rdfs:range :GraphArchitecture .

:inLayer a rdf:Property ;
    rdfs:label "inLayer"@en ;
    schema:description "Associates an entity with one logical graph layer."@en ;
    schema:name "inLayer"@en ;
    rdfs:comment "Associates an entity with one logical graph layer."@en ;
    rdfs:domain rdfs:Resource ;
    rdfs:isDefinedBy :ontology ;
    rdfs:range :GraphLayer .

:invoiceShape a sh:NodeShape ;
    schema:about :ruleArithmetic ;
    schema:description "Invoice total must reconcile with line items and tax."@en ;
    schema:name "Invoice validation shape"@en ;
    sh:sparql :invoiceShapeConstraint ;
    sh:targetClass schema:Invoice ;
    :inLayer :rulesLayer .

:matchedTerm a rdf:Property ;
    rdfs:label "matchedTerm"@en ;
    schema:description "Connects a ranked result to the matched ontology term."@en ;
    schema:name "matchedTerm"@en ;
    rdfs:comment "Connects a ranked result to the matched ontology term."@en ;
    rdfs:domain :RetrievalCandidate ;
    rdfs:isDefinedBy :ontology ;
    rdfs:range rdfs:Resource .

:neo4jTreatment a rdf:Property ;
    rdfs:label "neo4jTreatment"@en ;
    schema:description "Describes how the article's Neo4j implementation treats a comparison dimension."@en ;
    schema:name "neo4jTreatment"@en ;
    rdfs:comment "Describes how the article's Neo4j implementation treats a comparison dimension."@en ;
    rdfs:domain :ComparisonDimension ;
    rdfs:isDefinedBy :ontology ;
    rdfs:range xsd:string .

:observedAmount a rdf:Property ;
    rdfs:label "observedAmount"@en ;
    schema:description "Observed monetary amount supplied by the invoice."@en ;
    schema:name "observedAmount"@en ;
    rdfs:comment "Observed monetary amount supplied by the invoice."@en ;
    rdfs:domain rdfs:Resource ;
    rdfs:isDefinedBy :ontology ;
    rdfs:range xsd:decimal .

:portfolio a schema:Collection ;
    schema:description "Illustrative property portfolio used solely for the proof of concept."@en ;
    schema:hasPart :property1 ;
    schema:name "Rhein Main demonstration property portfolio"@en .

:semanticScore a rdf:Property ;
    rdfs:label "semanticScore"@en ;
    schema:description "Score contributed by RDF type and graph-pattern constraints."@en ;
    schema:name "semanticScore"@en ;
    rdfs:comment "Score contributed by RDF type and graph-pattern constraints."@en ;
    rdfs:domain :RetrievalCandidate ;
    rdfs:isDefinedBy :ontology ;
    rdfs:range xsd:decimal .

:supportsCapability a rdf:Property ;
    rdfs:label "supportsCapability"@en ;
    schema:description "Connects an architecture to a demonstrated or source-described capability."@en ;
    schema:name "supportsCapability"@en ;
    rdfs:comment "Connects an architecture to a demonstrated or source-described capability."@en ;
    rdfs:domain :GraphArchitecture ;
    rdfs:isDefinedBy :ontology ;
    rdfs:range :PlatformCapability .

:usesRetrievalMode a rdf:Property ;
    rdfs:label "usesRetrievalMode"@en ;
    schema:description "Associates an execution with its retrieval mode."@en ;
    schema:name "usesRetrievalMode"@en ;
    rdfs:comment "Associates an execution with its retrieval mode."@en ;
    rdfs:domain :RetrievalExecution ;
    rdfs:isDefinedBy :ontology ;
    rdfs:range :RetrievalMode .

:virtuosoTreatment a rdf:Property ;
    rdfs:label "virtuosoTreatment"@en ;
    schema:description "Describes how the Virtuoso proof of concept treats a comparison dimension."@en ;
    schema:name "virtuosoTreatment"@en ;
    rdfs:comment "Describes how the Virtuoso proof of concept treats a comparison dimension."@en ;
    rdfs:domain :ComparisonDimension ;
    rdfs:isDefinedBy :ontology ;
    rdfs:range xsd:string .

<https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/rdf-infographic-skill#this> a schema:SoftwareApplication,
        prov:SoftwareAgent ;
    schema:description "Reusable OpenLink AI-agent skill used to generate, query, or present the RDF collection."@en ;
    schema:name "rdf-infographic-skill"@en ;
    schema:url <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/rdf-infographic-skill> ;
    prov:actedOnBehalfOf <https://www.linkedin.com/in/kidehen#this> .

<https://openai.com/codex/#this> a schema:SoftwareApplication,
        prov:SoftwareAgent ;
    schema:description "OpenAI coding agent environment used with GPT-5 Chat to generate this collection."@en ;
    schema:name "Codex"@en ;
    schema:url <https://openai.com/codex/> ;
    prov:actedOnBehalfOf <https://www.linkedin.com/in/kidehen#this> .

<https://www.linkedin.com/in/adamchic/#this> a schema:Person ;
    schema:description "Article author and knowledge-graph architect who presents the Neo4j-based layered real-estate proof of concept."@en ;
    schema:jobTitle "AI Manager; Knowledge Graph Architect"@en ;
    schema:name "Irina Adamchic, PhD"@en ;
    schema:url <https://www.linkedin.com/in/adamchic/> .

:akomaNtosoOntology a schema:CreativeWork ;
    schema:about :ontologyLayer ;
    schema:description "Article-listed ontology source for legal document structure."@en ;
    schema:identifier "akomantoso"@en ;
    schema:name "Akoma Ntoso (OASIS)"@en ;
    :inLayer :ontologyLayer .

:askArithmetic a schema:SoftwareSourceCode ;
    schema:codeSampleType "Executable"@en ;
    schema:description "Executable standards-based SPARQL ASK proof over the companion Turtle graph."@en ;
    schema:isPartOf :querySection ;
    schema:name "ASK Arithmetic"@en ;
    schema:programmingLanguage "SPARQL"@en ;
    schema:target <https://virtuoso.openlinksw.com/#this> ;
    schema:text """PREFIX schema: <http://schema.org/> PREFIX : <https://www.linkedin.com/pulse/power-layered-knowledge-graphs-applied-real-estate-adamchic-phd-vv4df/#>
ASK WHERE { :invoiceRE20260017 schema:totalPaymentDue 476.00 ; schema:tax 76.00 ; schema:hasPart :lineDiagnostic, :lineFilter, :lineTravel . :lineDiagnostic :observedAmount 120.00 . :lineFilter :observedAmount 180.00 . :lineTravel :observedAmount 100.00 . }"""@en .

:askAsset a schema:SoftwareSourceCode ;
    schema:codeSampleType "Executable"@en ;
    schema:description "Executable standards-based SPARQL ASK proof over the companion Turtle graph."@en ;
    schema:isPartOf :querySection ;
    schema:name "ASK Asset"@en ;
    schema:programmingLanguage "SPARQL"@en ;
    schema:target <https://virtuoso.openlinksw.com/#this> ;
    schema:text """PREFIX schema: <http://schema.org/> PREFIX : <https://www.linkedin.com/pulse/power-layered-knowledge-graphs-applied-real-estate-adamchic-phd-vv4df/#>
ASK WHERE { VALUES ?document { :invoiceRE20260017 :installationRecord :warranty :serviceContract } ?document schema:about :heatPumpHPDE2048 . }"""@en .

:askCoveredDiagnosticViolation a schema:SoftwareSourceCode ;
    schema:codeSampleType "Executable"@en ;
    schema:description "Executable standards-based SPARQL ASK proof over the companion Turtle graph."@en ;
    schema:isPartOf :querySection ;
    schema:name "ASK CoveredDiagnostic violation"@en ;
    schema:programmingLanguage "SPARQL"@en ;
    schema:target <https://virtuoso.openlinksw.com/#this> ;
    schema:text """PREFIX schema: <http://schema.org/> PREFIX : <https://www.linkedin.com/pulse/power-layered-knowledge-graphs-applied-real-estate-adamchic-phd-vv4df/#>
ASK WHERE { :invoiceRE20260017 schema:hasPart :lineDiagnostic . :lineDiagnostic :observedAmount ?amount . FILTER(?amount > 0) :serviceContract schema:about :heatPumpHPDE2048 . }"""@en .

:askDuplicate a schema:SoftwareSourceCode ;
    schema:codeSampleType "Executable"@en ;
    schema:description "Executable standards-based SPARQL ASK proof over the companion Turtle graph."@en ;
    schema:isPartOf :querySection ;
    schema:name "ASK Duplicate"@en ;
    schema:programmingLanguage "SPARQL"@en ;
    schema:target <https://virtuoso.openlinksw.com/#this> ;
    schema:text """PREFIX schema: <http://schema.org/> PREFIX : <https://www.linkedin.com/pulse/power-layered-knowledge-graphs-applied-real-estate-adamchic-phd-vv4df/#>
ASK WHERE { :invoiceRE20260017 schema:identifier ?id ; schema:provider ?supplier . :priorInvoiceRE20260017 schema:identifier ?id ; schema:provider ?supplier . FILTER(:invoiceRE20260017 != :priorInvoiceRE20260017) }"""@en .

:askEvidencePath a schema:SoftwareSourceCode ;
    schema:codeSampleType "Executable"@en ;
    schema:description "Executable standards-based SPARQL ASK proof over the companion Turtle graph."@en ;
    schema:isPartOf :querySection ;
    schema:name "ASK  evidence path"@en ;
    schema:programmingLanguage "SPARQL"@en ;
    schema:target <https://virtuoso.openlinksw.com/#this> ;
    schema:text """PREFIX schema: <http://schema.org/> PREFIX : <https://www.linkedin.com/pulse/power-layered-knowledge-graphs-applied-real-estate-adamchic-phd-vv4df/#>
ASK WHERE { :finding5 :focusNode :invoiceRE20260017 ; :hasEvidence :lineDiagnostic, :serviceContract ; :evaluatesRule :ruleCoveredDiagnostic . :lineDiagnostic schema:about :heatPumpHPDE2048 . :serviceContract schema:about :heatPumpHPDE2048 . }"""@en .

:askSupplier a schema:SoftwareSourceCode ;
    schema:codeSampleType "Executable"@en ;
    schema:description "Executable standards-based SPARQL ASK proof over the companion Turtle graph."@en ;
    schema:isPartOf :querySection ;
    schema:name "ASK Supplier"@en ;
    schema:programmingLanguage "SPARQL"@en ;
    schema:target <https://virtuoso.openlinksw.com/#this> ;
    schema:text """PREFIX schema: <http://schema.org/> PREFIX : <https://www.linkedin.com/pulse/power-layered-knowledge-graphs-applied-real-estate-adamchic-phd-vv4df/#>
ASK WHERE { :invoiceRE20260017 schema:provider ?supplier . :installationContract schema:provider ?supplier . :serviceContract schema:provider ?supplier . }"""@en .

:brickOntology a schema:CreativeWork ;
    schema:about :ontologyLayer ;
    schema:description "Article-listed ontology source for buildings, hvac, and equipment."@en ;
    schema:identifier "brick"@en ;
    schema:name "Brick Schema"@en ;
    :inLayer :ontologyLayer .

:calloutCeilingShapeConstraint a sh:SPARQLConstraint ;
    schema:description "Invoice total should not exceed the contracted call-out ceiling."@en ;
    schema:name "Call-out ceiling shape constraint"@en ;
    sh:message "Invoice total should not exceed the contracted call-out ceiling."@en ;
    :inLayer :rulesLayer .

:comparisonSection a schema:CreativeWork ;
    schema:description "The proof of concept holds the real-estate evidence constant and contrasts the article's Neo4j design with an RDF-native Virtuoso implementation. The comparison concerns concrete architectures rather than claiming that every Neo4j deployment lacks semantic integrations."@en ;
    schema:hasPart :dimensionGraphModel,
        :dimensionIdentity,
        :dimensionInference,
        :dimensionLayers,
        :dimensionPortability,
        :dimensionProvenance,
        :dimensionPureSparql,
        :dimensionQuery,
        :dimensionRules,
        :dimensionSchema ;
    schema:isPartOf :notes ;
    schema:name "One problem, two competing graph architectures"@en ;
    schema:position 2 ;
    schema:text "The proof of concept holds the real-estate evidence constant and contrasts the article's Neo4j design with an RDF-native Virtuoso implementation. The comparison concerns concrete architectures rather than claiming that every Neo4j deployment lacks semantic integrations."@en .

:coveredServiceShapeConstraint a sh:SPARQLConstraint ;
    schema:description "Covered diagnostic service must not be billed as a separate charge."@en ;
    schema:name "Covered-service billing shape constraint"@en ;
    sh:message "Covered diagnostic service must not be billed as a separate charge."@en ;
    :inLayer :rulesLayer .

:customOntologySource a schema:CreativeWork ;
    schema:about :ontologyLayer ;
    schema:description "Article-listed ontology source for project-specific types."@en ;
    schema:identifier "custom"@en ;
    schema:name "Custom ontology"@en ;
    :inLayer :ontologyLayer .

:cypherQuerying a :PlatformCapability ;
    schema:description "Property-graph query surface used by the article's implementation."@en ;
    schema:name "Cypher graph querying"@en ;
    :implementsArchitecture :neo4jArchitecture .

:dimensionGraphModel a :ComparisonDimension ;
    schema:about :neo4jArchitecture,
        :virtuosoArchitecture ;
    schema:description "Comparison of graph model across the two concrete implementations."@en ;
    schema:name "Graph model"@en ;
    :neo4jTreatment "Linked Property Graph with labeled nodes and relationships."@en ;
    :virtuosoTreatment "RDF quad model with IRI-identified subjects, predicates, objects, and optional graph names."@en .

:dimensionIdentity a :ComparisonDimension ;
    schema:about :neo4jArchitecture,
        :virtuosoArchitecture ;
    schema:description "Comparison of entity identity across the two concrete implementations."@en ;
    schema:name "Entity identity"@en ;
    :neo4jTreatment "Internal graph identifiers and URI properties support identity within the property graph."@en ;
    :virtuosoTreatment "HTTP IRIs are native identifiers for entities and predicates and can be dereferenced through a Linked Data resolver."@en .

:dimensionInference a :ComparisonDimension ;
    schema:about :neo4jArchitecture,
        :virtuosoArchitecture ;
    schema:description "Comparison of inference across the two concrete implementations."@en ;
    schema:name "Inference"@en ;
    :neo4jTreatment "Additional semantic inference depends on modeling conventions, application logic, or added integrations."@en ;
    :virtuosoTreatment "RDFS/OWL axioms can entail additional facts while remaining visible and queryable as graph semantics."@en .

:dimensionLayers a :ComparisonDimension ;
    schema:about :neo4jArchitecture,
        :virtuosoArchitecture ;
    schema:description "Comparison of layer representation across the two concrete implementations."@en ;
    schema:name "Layer representation"@en ;
    :neo4jTreatment "Neo4j labels and architectural conventions identify OntologyLayer, LegalLayer, ContractsLayer, InvoiceLayer, and RulesLayer."@en ;
    :virtuosoTreatment "Named layer resources and inLayer predicates make layer membership queryable while retaining shared entity identity."@en .

:dimensionPortability a :ComparisonDimension ;
    schema:about :neo4jArchitecture,
        :virtuosoArchitecture ;
    schema:description "Comparison of portability across the two concrete implementations."@en ;
    schema:name "Portability"@en ;
    :neo4jTreatment "Graph Builder, APOC, Neo4j vector indexes, and Cypher are Neo4j-specific implementation choices."@en ;
    :virtuosoTreatment "RDF, RDFS, OWL, SHACL, SPARQL, and HTTP IRIs are standards-based and portable across conforming systems."@en .

:dimensionProvenance a :ComparisonDimension ;
    schema:about :neo4jArchitecture,
        :virtuosoArchitecture ;
    schema:description "Comparison of provenance across the two concrete implementations."@en ;
    schema:name "Provenance"@en ;
    :neo4jTreatment "Application-specific properties and traversal history can record lineage."@en ;
    :virtuosoTreatment "PROV-O activities and named evidence relationships connect every result to its sources and generating mode."@en .

:dimensionPureSparql a :ComparisonDimension ;
    schema:about :neo4jArchitecture,
        :virtuosoArchitecture ;
    schema:description "Comparison of pure sparql proof across the two concrete implementations."@en ;
    schema:name "Pure SPARQL proof"@en ;
    :neo4jTreatment "The article uses a Neo4j vector index to pre-filter OntologyLayer nodes."@en ;
    :virtuosoTreatment "The RDF proof of concept demonstrates the same business scenario with standards-based SPARQL 1.1 patterns and no vector-function dependency."@en .

:dimensionQuery a :ComparisonDimension ;
    schema:about :neo4jArchitecture,
        :virtuosoArchitecture ;
    schema:description "Comparison of query surface across the two concrete implementations."@en ;
    schema:name "Query surface"@en ;
    :neo4jTreatment "Cypher plus Neo4j procedures and indexes."@en ;
    :virtuosoTreatment "Pure SPARQL graph patterns over ontology instances, layers, rules, evidence, and findings."@en .

:dimensionRules a :ComparisonDimension ;
    schema:about :neo4jArchitecture,
        :virtuosoArchitecture ;
    schema:description "Comparison of rules and validation across the two concrete implementations."@en ;
    schema:name "Rules and validation"@en ;
    :neo4jTreatment "RulesLayer and application/agent traversal evaluate business conditions."@en ;
    :virtuosoTreatment "Named RDF rules, SHACL constraints, SPARQL ASK checks, and provenance-bearing findings."@en .

:dimensionSchema a :ComparisonDimension ;
    schema:about :neo4jArchitecture,
        :virtuosoArchitecture ;
    schema:description "Comparison of domain schema across the two concrete implementations."@en ;
    schema:name "Domain schema"@en ;
    :neo4jTreatment "Fixed Entity Architecture projects ontology concepts into LPG labels and properties."@en ;
    :virtuosoTreatment "RDF/OWL ontology terms remain native graph resources with domains, ranges, hierarchy, and dereferenceable identifiers."@en .

:duplicateInvoiceShapeConstraint a sh:SPARQLConstraint ;
    schema:description "Supplier invoice identifiers should be unique."@en ;
    schema:name "Duplicate invoice identifier shape constraint"@en ;
    sh:message "Supplier invoice identifiers should be unique."@en ;
    :inLayer :rulesLayer .

:fiboOntology a schema:CreativeWork ;
    schema:about :ontologyLayer ;
    schema:description "Article-listed ontology source for finance and legal-business concepts."@en ;
    schema:identifier "fibo"@en ;
    schema:name "FIBO (EDM Council)"@en ;
    :inLayer :ontologyLayer .

:finding1 a :ValidationFinding ;
    schema:description "Line items sum to EUR 400.00; tax is EUR 76.00; total due is EUR 476.00."@en ;
    schema:name "PASS: Invoice arithmetic rule"@en ;
    :evaluatesRule :ruleArithmetic ;
    :findingStatus "PASS"@en ;
    :focusNode :invoiceRE20260017 ;
    :hasEvidence :invoiceRE20260017,
        :lineDiagnostic,
        :lineFilter,
        :lineTravel ;
    :inLayer :rulesLayer .

:finding2 a :ValidationFinding ;
    schema:description "The invoice provider matches the contractor identified by the installation and service contracts."@en ;
    schema:name "PASS: Supplier identity rule"@en ;
    :evaluatesRule :ruleSupplierMatch ;
    :findingStatus "PASS"@en ;
    :focusNode :invoiceRE20260017 ;
    :hasEvidence :contractor,
        :installationContract,
        :invoiceRE20260017,
        :serviceContract ;
    :inLayer :rulesLayer .

:finding3 a :ValidationFinding ;
    schema:description "The invoice, installation record, warranty, and service contract all concern heat pump HP-DE-2048."@en ;
    schema:name "PASS: Equipment identity rule"@en ;
    :evaluatesRule :ruleAssetIdentity ;
    :findingStatus "PASS"@en ;
    :focusNode :invoiceRE20260017 ;
    :hasEvidence :heatPumpHPDE2048,
        :installationRecord,
        :invoiceRE20260017,
        :serviceContract,
        :warranty ;
    :inLayer :rulesLayer .

:finding4 a :ValidationFinding ;
    schema:description "The invoice date falls within the illustrative warranty validity period."@en ;
    schema:name "PASS: Warranty-period rule"@en ;
    :evaluatesRule :ruleWarrantyPeriod ;
    :findingStatus "PASS"@en ;
    :focusNode :invoiceRE20260017 ;
    :hasEvidence :invoiceRE20260017,
        :warranty ;
    :inLayer :rulesLayer .

:finding5 a :ValidationFinding ;
    schema:description "The diagnostic line is billed even though the annual service contract says that diagnostic visit is covered."@en ;
    schema:name "FAIL: Covered-service billing rule"@en ;
    :evaluatesRule :ruleCoveredDiagnostic ;
    :findingStatus "FAIL"@en ;
    :focusNode :invoiceRE20260017 ;
    :hasEvidence :invoiceRE20260017,
        :lineDiagnostic,
        :serviceContract ;
    :inLayer :rulesLayer .

:finding6 a :ValidationFinding ;
    schema:description "A prior invoice record uses the same supplier invoice identifier."@en ;
    schema:name "WARNING: Duplicate invoice identifier rule"@en ;
    :evaluatesRule :ruleDuplicateIdentifier ;
    :findingStatus "WARNING"@en ;
    :focusNode :invoiceRE20260017 ;
    :hasEvidence :invoiceRE20260017,
        :priorInvoiceRE20260017 ;
    :inLayer :rulesLayer .

:finding7 a :ValidationFinding ;
    schema:description "The total invoice amount of EUR 476.00 exceeds the illustrative EUR 450.00 call-out ceiling."@en ;
    schema:name "WARNING: Service call-out ceiling rule"@en ;
    :evaluatesRule :ruleCalloutCeiling ;
    :findingStatus "WARNING"@en ;
    :focusNode :invoiceRE20260017 ;
    :hasEvidence :invoiceRE20260017,
        :serviceContract ;
    :inLayer :rulesLayer .

:finding8 a :ValidationFinding ;
    schema:description "The invoice includes an explicit tax amount and the legal evidence node is connected to the rule."@en ;
    schema:name "PASS: Tax evidence rule"@en ;
    :evaluatesRule :ruleTaxEvidence ;
    :findingStatus "PASS"@en ;
    :focusNode :invoiceRE20260017 ;
    :hasEvidence :invoiceRE20260017,
        :legalEvidence,
        :taxRequirement ;
    :inLayer :rulesLayer .

:fixedEntityArchitecture a :PlatformCapability ;
    schema:description "Source pattern that projects selected ontology concepts into a stable Linked Property Graph entity layer."@en ;
    schema:name "Fixed Entity Architecture"@en ;
    :implementsArchitecture :neo4jArchitecture .

:invoiceShapeConstraint a sh:SPARQLConstraint ;
    schema:description "Invoice total must reconcile with line items and tax."@en ;
    schema:name "Invoice validation shape constraint"@en ;
    sh:message "Invoice total must reconcile with line items and tax."@en ;
    :inLayer :rulesLayer .

:kgOnlyMode a :RetrievalMode ;
    schema:description "RDF-grounded retrieval that answers from the generated ontology instances, graph structure, rules, and local evidence without vector or full-text functions."@en ;
    schema:instrument <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/data-twingler#this> ;
    schema:name "data-twingler KG-only mode"@en .

:lkifCoreOntology a schema:CreativeWork ;
    schema:about :ontologyLayer ;
    schema:description "Article-listed ontology source for legal concepts."@en ;
    schema:identifier "lkif-core"@en ;
    schema:name "LKIF-Core"@en ;
    :inLayer :ontologyLayer .

:neo4jVectorIndex a :PlatformCapability ;
    schema:description "Source mechanism used to find the top-k ontology-layer nodes for a document chunk."@en ;
    schema:name "Neo4j vector index"@en ;
    :implementsArchitecture :neo4jArchitecture .

:p2pOntology a schema:CreativeWork ;
    schema:about :ontologyLayer ;
    schema:description "Article-listed ontology source for procure-to-pay and invoices."@en ;
    schema:identifier "p2p-o"@en ;
    schema:name "P2P-O (DFKI)"@en ;
    :inLayer :ontologyLayer .

:provEvidence a :PlatformCapability ;
    schema:description "Named provenance links from retrieval and validation results back to evidence and execution activities."@en ;
    schema:name "PROV-O evidence lineage"@en ;
    :implementsArchitecture :virtuosoArchitecture .

:pureSparqlCoveredServicePathQuery a schema:SoftwareSourceCode ;
    schema:codeSampleType "Executable"@en ;
    schema:description "Shows the failed covered-service path from finding to invoice, billed diagnostic line, service contract, and rule using pure SPARQL."@en ;
    schema:isPartOf :querySection ;
    schema:name "Pure SPARQL covered-service evidence path"@en ;
    schema:programmingLanguage "SPARQL"@en ;
    schema:target <https://virtuoso.openlinksw.com/#this> ;
    schema:text """PREFIX schema: <http://schema.org/>
PREFIX : <https://www.linkedin.com/pulse/power-layered-knowledge-graphs-applied-real-estate-adamchic-phd-vv4df/#>
SELECT ?finding ?invoice ?lineItem ?lineName ?lineAmount ?serviceContract ?contractText ?rule
FROM <https://linkeddata.uriburner.com/DAV/demos/daas/power-layered-knowledge-graphs-real-estate-neo4j-virtuoso-gpt5-chat-1.ttl>
WHERE {
  ?finding :evaluatesRule :ruleCoveredDiagnostic ;
           :focusNode ?invoice ;
           :hasEvidence ?lineItem, ?serviceContract ;
           :evaluatesRule ?rule .
  ?invoice a schema:Invoice ;
           schema:hasPart ?lineItem .
  ?lineItem a :InvoiceLineItem ;
            schema:name ?lineName ;
            :observedAmount ?lineAmount .
  ?serviceContract schema:about :heatPumpHPDE2048 ;
                   schema:description ?contractText .
  FILTER(?lineAmount > 0)
}
ORDER BY ?finding ?lineItem"""@en .

:pureSparqlInvoiceInstanceQuery a schema:SoftwareSourceCode ;
    schema:codeSampleType "Executable"@en ;
    schema:description "Retrieves the proof-of-concept invoice instance, line items, amounts, asset, supplier, tax, and total without vector or full-text functions."@en ;
    schema:isPartOf :querySection ;
    schema:name "Pure SPARQL invoice instance details"@en ;
    schema:programmingLanguage "SPARQL"@en ;
    schema:target <https://virtuoso.openlinksw.com/#this> ;
    schema:text """PREFIX schema: <http://schema.org/>
PREFIX : <https://www.linkedin.com/pulse/power-layered-knowledge-graphs-applied-real-estate-adamchic-phd-vv4df/#>
SELECT ?invoice ?invoiceName ?lineItem ?lineName ?lineAmount ?tax ?total ?asset ?supplier
FROM <https://linkeddata.uriburner.com/DAV/demos/daas/power-layered-knowledge-graphs-real-estate-neo4j-virtuoso-gpt5-chat-1.ttl>
WHERE {
  ?invoice a schema:Invoice ;
           schema:name ?invoiceName ;
           schema:hasPart ?lineItem ;
           schema:about ?asset ;
           schema:provider ?supplier ;
           schema:tax ?tax ;
           schema:totalPaymentDue ?total .
  ?lineItem a :InvoiceLineItem ;
            schema:name ?lineName ;
            :observedAmount ?lineAmount .
}
ORDER BY ?invoice ?lineName"""@en .

:pureSparqlLayerInventoryQuery a schema:SoftwareSourceCode ;
    schema:codeSampleType "Executable"@en ;
    schema:description "Lists each generated GraphLayer and its ontology, evidence, invoice, and rule members using only SPARQL graph patterns."@en ;
    schema:isPartOf :querySection ;
    schema:name "Pure SPARQL layer inventory"@en ;
    schema:programmingLanguage "SPARQL"@en ;
    schema:target <https://virtuoso.openlinksw.com/#this> ;
    schema:text """PREFIX schema: <http://schema.org/>
PREFIX : <https://www.linkedin.com/pulse/power-layered-knowledge-graphs-applied-real-estate-adamchic-phd-vv4df/#>
SELECT ?layer ?layerName ?member ?memberName ?memberType
FROM <https://linkeddata.uriburner.com/DAV/demos/daas/power-layered-knowledge-graphs-real-estate-neo4j-virtuoso-gpt5-chat-1.ttl>
WHERE {
  ?layer a :GraphLayer ;
         schema:name ?layerName ;
         schema:hasPart ?member .
  OPTIONAL { ?member schema:name ?memberName . }
  OPTIONAL { ?member a ?memberType . }
}
ORDER BY ?layerName ?memberName ?member"""@en .

:pureSparqlValidationFindingsQuery a schema:SoftwareSourceCode ;
    schema:codeSampleType "Executable"@en ;
    schema:description "Returns the named validation findings, statuses, evaluated rules, focus node, and evidence resources using ordinary SPARQL."@en ;
    schema:isPartOf :querySection ;
    schema:name "Pure SPARQL validation findings"@en ;
    schema:programmingLanguage "SPARQL"@en ;
    schema:target <https://virtuoso.openlinksw.com/#this> ;
    schema:text """PREFIX schema: <http://schema.org/>
PREFIX : <https://www.linkedin.com/pulse/power-layered-knowledge-graphs-applied-real-estate-adamchic-phd-vv4df/#>
SELECT ?finding ?findingName ?status ?rule ?ruleName ?focusNode ?evidence ?evidenceName
FROM <https://linkeddata.uriburner.com/DAV/demos/daas/power-layered-knowledge-graphs-real-estate-neo4j-virtuoso-gpt5-chat-1.ttl>
WHERE {
  ?finding a :ValidationFinding ;
           schema:name ?findingName ;
           :findingStatus ?status ;
           :evaluatesRule ?rule ;
           :focusNode ?focusNode ;
           :hasEvidence ?evidence .
  OPTIONAL { ?rule schema:name ?ruleName . }
  OPTIONAL { ?evidence schema:name ?evidenceName . }
}
ORDER BY ?status ?findingName ?evidenceName"""@en .

:rdfHttpIriIdentity a :PlatformCapability ;
    schema:description "Virtuoso design capability in which entities and predicates are identified natively by HTTP IRIs."@en ;
    schema:name "RDF HTTP IRI identity"@en ;
    :implementsArchitecture :virtuosoArchitecture .

:rdfInference a :PlatformCapability ;
    schema:description "Derivation of additional facts from explicit RDFS/OWL axioms and graph semantics."@en ;
    schema:name "RDF inference"@en ;
    :implementsArchitecture :virtuosoArchitecture .

:realEstateCoreOntology a schema:CreativeWork ;
    schema:about :ontologyLayer ;
    schema:description "Article-listed ontology source for buildings and real estate."@en ;
    schema:identifier "rec"@en ;
    schema:name "RealEstateCore"@en ;
    :inLayer :ontologyLayer .

:resultsSection a schema:CreativeWork ;
    schema:description "Standards-based RDF and SPARQL checks are executed locally. The proof of concept intentionally excludes SPARQL queries that depend on vector functions so the showcase is portable across SPARQL 1.1 processors."@en ;
    schema:isPartOf :notes ;
    schema:name "Executed pure SPARQL evidence"@en ;
    schema:position 5 ;
    schema:text "Standards-based RDF and SPARQL checks are executed locally. The proof of concept intentionally excludes SPARQL queries that depend on vector functions so the showcase is portable across SPARQL 1.1 processors."@en .

:retrievalSection a schema:CreativeWork ;
    schema:description "The article's Cypher vector query is preserved as source evidence. The Virtuoso/RDF proof of concept uses pure SPARQL graph patterns over generated ontology instances, invoice evidence, layer membership, rules, and validation findings."@en ;
    schema:isPartOf :notes ;
    schema:name "Schema selection: vector GraphRAG versus pure SPARQL"@en ;
    schema:position 4 ;
    schema:text "The article's Cypher vector query is preserved as source evidence. The Virtuoso/RDF proof of concept uses pure SPARQL graph patterns over generated ontology instances, invoice evidence, layer membership, rules, and validation findings."@en .

:sourceCypherVectorPrefilter a schema:SoftwareSourceCode ;
    schema:codeSampleType "Source query"@en ;
    schema:description "Cypher query reproduced from the LinkedIn article for top-k vector retrieval over OntologyLayer nodes."@en ;
    schema:isPartOf :querySection ;
    schema:name "Source Neo4j GraphRAG ontology pre-filter"@en ;
    schema:programmingLanguage "Cypher"@en ;
    schema:target <http://dbpedia.org/resource/Neo4j> ;
    schema:text """CALL db.index.vector.queryNodes($index_name, $k, $embedding)
YIELD node AS vectorNode, score AS vectorScore
WITH vectorNode, vectorScore
WHERE vectorNode:OntologyLayer AND vectorNode.name IS NOT NULL
RETURN vectorNode.name AS name,
       coalesce(vectorNode.uri, '') AS uri,
       coalesce(vectorNode.kind, 'class') AS kind,
       coalesce(vectorNode.ontologies, []) AS ontologies,
       vectorScore AS score
ORDER BY vectorScore DESC"""@en .

:sourceThesisSection a schema:CreativeWork ;
    schema:description "The article presents a Neo4j Community Edition proof of concept in which a Fixed Entity Architecture imports selected ontology concepts into a Linked Property Graph, organizes evidence into five layers, and uses vector-based GraphRAG to pre-filter ontology terms before document extraction."@en ;
    schema:isPartOf :notes ;
    schema:name "What the source article builds"@en ;
    schema:position 1 ;
    schema:text "The article presents a Neo4j Community Edition proof of concept in which a Fixed Entity Architecture imports selected ontology concepts into a Linked Property Graph, organizes evidence into five layers, and uses vector-based GraphRAG to pre-filter ontology terms before document extraction."@en .

:sparqlGraphQuerying a :PlatformCapability ;
    schema:description "Standards-based query surface for graph patterns, named graphs, provenance, and federation."@en ;
    schema:name "SPARQL graph querying"@en ;
    :implementsArchitecture :virtuosoArchitecture .

:termEvidencePath a schema:DefinedTerm ;
    schema:description "Connected subgraph that explains how a finding follows from business documents, assets, rules, and provenance."@en ;
    schema:inDefinedTermSet :glossary ;
    schema:name "Evidence path"@en .

:termFixedEntityArchitecture a schema:DefinedTerm ;
    schema:description "The source author's pattern for a stable entity layer that projects selected ontology concepts into a property graph."@en ;
    schema:inDefinedTermSet :glossary ;
    schema:name "Fixed Entity Architecture"@en .

:termGraphRag a schema:DefinedTerm ;
    schema:description "Retrieval-augmented generation that uses graph structure or graph retrieval as part of context selection."@en ;
    schema:inDefinedTermSet :glossary ;
    schema:name "GraphRAG"@en .

:termInference a schema:DefinedTerm ;
    schema:description "Derivation of additional RDF statements from explicit axioms and entailment rules."@en ;
    schema:inDefinedTermSet :glossary ;
    schema:name "RDF inference"@en .

:termKgOnly a schema:DefinedTerm ;
    schema:description "Resolution from local RDF graph evidence and semantics without endpoint corroboration."@en ;
    schema:inDefinedTermSet :glossary ;
    schema:name "KG-only retrieval"@en .

:termLinkedPropertyGraph a schema:DefinedTerm ;
    schema:description "Property-graph model using labeled nodes, relationships, and properties, with explicit links between entities."@en ;
    schema:inDefinedTermSet :glossary ;
    schema:name "Linked Property Graph"@en .

:termNamedGraph a schema:DefinedTerm ;
    schema:description "RDF graph identified by an IRI so statements can be grouped, queried, and attributed."@en ;
    schema:inDefinedTermSet :glossary ;
    schema:name "Named graph"@en .

:termOntologyLayer a schema:DefinedTerm ;
    schema:description "Layer containing stable domain terms used to guide extraction and connect other layers."@en ;
    schema:inDefinedTermSet :glossary ;
    schema:name "OntologyLayer"@en .

:termProvenance a schema:DefinedTerm ;
    schema:description "Information identifying the origin, transformation, evidence, and responsible activity behind a graph assertion or result."@en ;
    schema:inDefinedTermSet :glossary ;
    schema:name "Provenance"@en .

:termPureSparql a schema:DefinedTerm ;
    schema:description "A proof path that uses standards-based SPARQL graph patterns over RDF instances without full-text or vector-function extensions."@en ;
    schema:inDefinedTermSet :glossary ;
    schema:name "Pure SPARQL proof"@en .

:termRdf a schema:DefinedTerm ;
    schema:description "W3C graph data model using IRI-identified subjects, predicates, and objects."@en ;
    schema:inDefinedTermSet :glossary ;
    schema:name "Resource Description Framework"@en .

:termShacl a schema:DefinedTerm ;
    schema:description "RDF vocabulary for expressing and reporting graph-shape constraints."@en ;
    schema:inDefinedTermSet :glossary ;
    schema:name "Shapes Constraint Language"@en .

:virtuosoKgOnlyQuery a schema:SoftwareSourceCode ;
    schema:codeSampleType "Executable"@en ;
    schema:description "Deterministic RDF graph-pattern query selecting the ontology slice required for the heat-pump invoice scenario."@en ;
    schema:isPartOf :querySection ;
    schema:name "Virtuoso KG-only ontology-slice query"@en ;
    schema:programmingLanguage "SPARQL"@en ;
    schema:target <https://virtuoso.openlinksw.com/#this> ;
    schema:text """PREFIX schema: <http://schema.org/>
PREFIX : <https://www.linkedin.com/pulse/power-layered-knowledge-graphs-applied-real-estate-adamchic-phd-vv4df/#>
SELECT ?term ?name ?sourceOntology
FROM <https://linkeddata.uriburner.com/DAV/demos/daas/power-layered-knowledge-graphs-real-estate-neo4j-virtuoso-gpt5-chat-1.ttl>
WHERE {
  ?term :inLayer :ontologyLayer ;
        schema:name ?name .
  OPTIONAL { ?sourceOntology schema:hasPart ?term }
  VALUES ?term { :heatPumpConcept :invoiceConcept :serviceContractConcept :warrantyConcept :legalRequirementConcept }
}
ORDER BY ?name"""@en .

<http://dbpedia.org/resource/Neo4j> a schema:SoftwareApplication ;
    schema:description "Graph database used by the source article's proof of concept."@en ;
    schema:name "Neo4j"@en ;
    schema:url <https://neo4j.com/> .

<https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/data-twingler#this> a schema:SoftwareApplication,
        prov:SoftwareAgent ;
    schema:description "Reusable OpenLink AI-agent skill used to generate, query, or present the RDF collection."@en ;
    schema:name "data-twingler skill"@en ;
    schema:url <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/data-twingler> ;
    prov:actedOnBehalfOf <https://www.linkedin.com/in/kidehen#this> .

<https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this> a schema:SoftwareApplication,
        prov:SoftwareAgent ;
    schema:description "Reusable OpenLink AI-agent skill used to generate, query, or present the RDF collection."@en ;
    schema:name "kg-generator skill"@en ;
    schema:url <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator> ;
    prov:actedOnBehalfOf <https://www.linkedin.com/in/kidehen#this> .

:a1 a schema:Answer ;
    schema:isPartOf :q1 ;
    schema:name "Answer 1"@en ;
    schema:text "A smart layered graph can serve as a reusable knowledgebase foundation for multiple real-estate and agentic use cases rather than solving only one retrieval problem."@en .

:a10 a schema:Answer ;
    schema:isPartOf :q10 ;
    schema:name "Answer 10"@en ;
    schema:text "The matching identifier is suspicious evidence requiring review, but the small illustrative graph does not establish whether the earlier record was canceled, corrected, or legitimately reissued."@en .

:a11 a schema:Answer ;
    schema:isPartOf :q11 ;
    schema:name "Answer 11"@en ;
    schema:text "No. Legal nodes are illustrative evidence used to demonstrate graph linkage and validation mechanics, not a complete or authoritative statement of German law."@en .

:a12 a schema:Answer ;
    schema:isPartOf :q12 ;
    schema:name "Answer 12"@en ;
    schema:text "No. It compares the article's concrete LPG projection with the RDF-native Virtuoso proof of concept and acknowledges that Neo4j can be extended or integrated with semantic tooling."@en .

:a13 a schema:Answer ;
    schema:isPartOf :q13 ;
    schema:name "Answer 13"@en ;
    schema:text "Each named finding records its rule, focus node, status, explanation, and direct links to the invoice, contract, asset, or legal evidence supporting it."@en .

:a14 a schema:Answer ;
    schema:isPartOf :q14 ;
    schema:name "Answer 14"@en ;
    schema:text "Entities retain one stable IRI while explicit inLayer relations and cross-layer evidence links make their logical placement and reuse queryable."@en .

:a2 a schema:Answer ;
    schema:isPartOf :q2 ;
    schema:name "Answer 2"@en ;
    schema:text "It projects selected ontology concepts into a stable Neo4j entity layer so later document extraction can attach to a controlled domain schema."@en .

:a3 a schema:Answer ;
    schema:isPartOf :q3 ;
    schema:name "Answer 3"@en ;
    schema:text "Virtuoso is an RDF quad-store and multi-model database that can provide graph storage, query, inference-oriented semantics, provenance, and federation through SPARQL."@en .

:a4 a schema:Answer ;
    schema:isPartOf :q4 ;
    schema:name "Answer 4"@en ;
    schema:text "KG-only resolves answers from RDF graph structure, semantics, rules, and local evidence without depending on a live endpoint or vector retrieval."@en .

:a5 a schema:Answer ;
    schema:isPartOf :q5 ;
    schema:name "Answer 5"@en ;
    schema:text "This edition isolates the RDF proof of concept: every workbench query is pure SPARQL over generated ontology instances, rules, findings, and evidence paths."@en .

:a6 a schema:Answer ;
    schema:isPartOf :q6 ;
    schema:name "Answer 6"@en ;
    schema:text "No. The proof-of-concept queries use standards-based SPARQL 1.1 graph patterns. Virtuoso remains the RDF-native target, but this workbench avoids vector-specific functions."@en .

:a7 a schema:Answer ;
    schema:isPartOf :q7 ;
    schema:name "Answer 7"@en ;
    schema:text "Yes. The Turtle parse, standards-based SPARQL ASK validations, inference checks, graph-data extraction, HTML validation, and browser interaction checks are executed locally."@en .

:a8 a schema:Answer ;
    schema:isPartOf :q8 ;
    schema:name "Answer 8"@en ;
    schema:text "The Turtle parse, six SPARQL ASK validations, inference checks, graph-data extraction, HTML validation, and browser interaction checks are executed locally."@en .

:a9 a schema:Answer ;
    schema:isPartOf :q9 ;
    schema:name "Answer 9"@en ;
    schema:text "It finds that a diagnostic line was billed even though the illustrative annual service contract identifies that diagnostic visit as covered."@en .

:installationContract a :EvidenceDocument ;
    schema:about :building1,
        :heatPumpHPDE2048 ;
    schema:description "Illustrative contract identifying the installed asset, supplier, and agreed work."@en ;
    schema:name "Heat-pump installation contract"@en ;
    schema:provider :contractor ;
    :inLayer :contractsLayer .

:installationRecord a :EvidenceDocument ;
    schema:about :building1,
        :heatPumpHPDE2048 ;
    schema:description "Illustrative installation evidence connecting the building, equipment serial number, contractor, and installation date."@en ;
    schema:name "Installation record for HP-DE-2048"@en ;
    schema:provider :contractor ;
    :inLayer :contractsLayer .

:priorInvoiceRE20260017 a schema:Invoice ;
    schema:description "Illustrative prior record sharing the same supplier invoice identifier and triggering a duplicate warning."@en ;
    schema:identifier "RE-2026-0017"@en ;
    schema:name "Prior invoice record RE-2026-0017"@en ;
    schema:provider :contractor ;
    :inLayer :invoiceLayer .

:property1 a schema:Accommodation ;
    schema:description "Illustrative multi-unit property containing the heat-pump asset."@en ;
    schema:hasPart :building1 ;
    schema:name "Lindenhof Property"@en .

:ruleAssetIdentity a :ValidationRule ;
    schema:description "The invoice, installation record, warranty, and service contract all concern heat pump HP-DE-2048."@en ;
    schema:name "Equipment identity rule"@en ;
    :inLayer :rulesLayer .

:ruleSupplierMatch a :ValidationRule ;
    schema:description "The invoice provider matches the contractor identified by the installation and service contracts."@en ;
    schema:name "Supplier identity rule"@en ;
    :inLayer :rulesLayer .

:ruleTaxEvidence a :ValidationRule ;
    schema:description "The invoice includes an explicit tax amount and the legal evidence node is connected to the rule."@en ;
    schema:name "Tax evidence rule"@en ;
    :inLayer :rulesLayer .

:ruleWarrantyPeriod a :ValidationRule ;
    schema:description "The invoice date falls within the illustrative warranty validity period."@en ;
    schema:name "Warranty-period rule"@en ;
    :inLayer :rulesLayer .

:step1 a schema:HowToStep ;
    schema:description "Parse the Turtle document or load it into Virtuoso under the documented graph IRI."@en ;
    schema:isPartOf :howto ;
    schema:name "Load the companion Turtle graph"@en ;
    schema:position 1 ;
    schema:text "Parse the Turtle document or load it into Virtuoso under the documented graph IRI."@en .

:step2 a schema:HowToStep ;
    schema:description "Query the named GraphLayer resources and their members before evaluating the business scenario."@en ;
    schema:isPartOf :howto ;
    schema:name "Inspect the five source layers"@en ;
    schema:position 2 ;
    schema:text "Query the named GraphLayer resources and their members before evaluating the business scenario."@en .

:step3 a schema:HowToStep ;
    schema:description "Execute the deterministic SPARQL graph-pattern query to retrieve the ontology slice required by the invoice scenario."@en ;
    schema:isPartOf :howto ;
    schema:name "Run KG-only semantic selection"@en ;
    schema:position 3 ;
    schema:text "Execute the deterministic SPARQL graph-pattern query to retrieve the ontology slice required by the invoice scenario."@en .

:step4 a schema:HowToStep ;
    schema:description "Execute the arithmetic, supplier, asset, covered-service, duplicate-identifier, and evidence-path ASK queries."@en ;
    schema:isPartOf :howto ;
    schema:name "Run the validation ASK queries"@en ;
    schema:position 4 ;
    schema:text "Execute the arithmetic, supplier, asset, covered-service, duplicate-identifier, and evidence-path ASK queries."@en .

:step5 a schema:HowToStep ;
    schema:description "Execute the layer inventory, invoice instance, validation findings, covered-service path, and ASK proof queries."@en ;
    schema:isPartOf :howto ;
    schema:name "Run the pure SPARQL workbench queries"@en ;
    schema:position 5 ;
    schema:text "Execute the layer inventory, invoice instance, validation findings, covered-service path, and ASK proof queries."@en .

:step6 a schema:HowToStep ;
    schema:description "Compare returned entities, inferred facts, rule results, provenance paths, and portability while labeling measured and unmeasured claims separately."@en ;
    schema:isPartOf :howto ;
    schema:name "Compare evidence rather than slogans"@en ;
    schema:position 6 ;
    schema:text "Compare returned entities, inferred facts, rule results, provenance paths, and portability while labeling measured and unmeasured claims separately."@en .

:taxRequirement a :ValidationRule ;
    schema:description "Illustrative rule requiring an explicit tax amount and rate in the invoice evidence used by the proof of concept."@en ;
    schema:name "Invoice tax evidence requirement"@en ;
    :hasEvidence :legalEvidence ;
    :inLayer :legalLayer .

:building1 a :buildingConcept ;
    schema:description "Building served by heat pump HP-DE-2048."@en ;
    schema:hasPart :heatPumpHPDE2048 ;
    schema:name "Lindenhof Building A"@en ;
    :inLayer :ontologyLayer .

:legalEvidence a :EvidenceDocument ;
    schema:description "Proof-of-concept legal evidence record. It demonstrates source linkage and does not claim to be a complete statement of German law or legal advice."@en ;
    schema:name "Illustrative German invoice and tax evidence record"@en ;
    :inLayer :legalLayer .

:legalLayer a :GraphLayer ;
    schema:description "Legal documents, chunks, obligations, authorities, and regulatory evidence."@en ;
    schema:hasPart :legalEvidence,
        :taxRequirement ;
    schema:isPartOf :pocSection ;
    schema:name "LegalLayer"@en .

:lineFilter a :InvoiceLineItem ;
    schema:about :heatPumpHPDE2048 ;
    schema:description "Billable material outside diagnostic coverage"@en ;
    schema:isPartOf :invoiceRE20260017 ;
    schema:name "Replacement filter"@en ;
    :inLayer :invoiceLayer ;
    :observedAmount 180.00 .

:lineTravel a :InvoiceLineItem ;
    schema:about :heatPumpHPDE2048 ;
    schema:description "Billable call-out component"@en ;
    schema:isPartOf :invoiceRE20260017 ;
    schema:name "Technician travel"@en ;
    :inLayer :invoiceLayer ;
    :observedAmount 100.00 .

:q1 a schema:Question ;
    schema:acceptedAnswer :a1 ;
    schema:hasPart :a1 ;
    schema:isPartOf :faq ;
    schema:name "What is the article's central architectural claim?"@en .

:q10 a schema:Question ;
    schema:acceptedAnswer :a10 ;
    schema:hasPart :a10 ;
    schema:isPartOf :faq ;
    schema:name "Why is the duplicate invoice only a warning?"@en .

:q11 a schema:Question ;
    schema:acceptedAnswer :a11 ;
    schema:hasPart :a11 ;
    schema:isPartOf :faq ;
    schema:name "Does this collection provide legal advice?"@en .

:q12 a schema:Question ;
    schema:acceptedAnswer :a12 ;
    schema:hasPart :a12 ;
    schema:isPartOf :faq ;
    schema:name "Does the comparison claim every Neo4j system lacks semantics?"@en .

:q13 a schema:Question ;
    schema:acceptedAnswer :a13 ;
    schema:hasPart :a13 ;
    schema:isPartOf :faq ;
    schema:name "What makes an RDF finding auditable?"@en .

:q14 a schema:Question ;
    schema:acceptedAnswer :a14 ;
    schema:hasPart :a14 ;
    schema:isPartOf :faq ;
    schema:name "How does the graph remain layered without duplicating entities?"@en .

:q2 a schema:Question ;
    schema:acceptedAnswer :a2 ;
    schema:hasPart :a2 ;
    schema:isPartOf :faq ;
    schema:name "What does Fixed Entity Architecture do in the source implementation?"@en .

:q3 a schema:Question ;
    schema:acceptedAnswer :a3 ;
    schema:hasPart :a3 ;
    schema:isPartOf :faq ;
    schema:name "Why is Virtuoso treated as a head-on competitor?"@en .

:q4 a schema:Question ;
    schema:acceptedAnswer :a4 ;
    schema:hasPart :a4 ;
    schema:isPartOf :faq ;
    schema:name "What is KG-only mode in this collection?"@en .

:q5 a schema:Question ;
    schema:acceptedAnswer :a5 ;
    schema:hasPart :a5 ;
    schema:isPartOf :faq ;
    schema:name "Why remove vector-function SPARQL from this edition?"@en .

:q6 a schema:Question ;
    schema:acceptedAnswer :a6 ;
    schema:hasPart :a6 ;
    schema:isPartOf :faq ;
    schema:name "Does the proof require Virtuoso vector functions?"@en .

:q7 a schema:Question ;
    schema:acceptedAnswer :a7 ;
    schema:hasPart :a7 ;
    schema:isPartOf :faq ;
    schema:name "Was the pure SPARQL proof executed during generation?"@en .

:q8 a schema:Question ;
    schema:acceptedAnswer :a8 ;
    schema:hasPart :a8 ;
    schema:isPartOf :faq ;
    schema:name "Which parts were executed?"@en .

:q9 a schema:Question ;
    schema:acceptedAnswer :a9 ;
    schema:hasPart :a9 ;
    schema:isPartOf :faq ;
    schema:name "What invoice defect does the proof of concept find?"@en .

:ruleArithmetic a :ValidationRule ;
    schema:description "Line items sum to EUR 400.00; tax is EUR 76.00; total due is EUR 476.00."@en ;
    schema:name "Invoice arithmetic rule"@en ;
    :inLayer :rulesLayer .

:ruleCalloutCeiling a :ValidationRule ;
    schema:description "The total invoice amount of EUR 476.00 exceeds the illustrative EUR 450.00 call-out ceiling."@en ;
    schema:name "Service call-out ceiling rule"@en ;
    :inLayer :rulesLayer .

:ruleCoveredDiagnostic a :ValidationRule ;
    schema:description "The diagnostic line is billed even though the annual service contract says that diagnostic visit is covered."@en ;
    schema:name "Covered-service billing rule"@en ;
    :inLayer :rulesLayer .

:ruleDuplicateIdentifier a :ValidationRule ;
    schema:description "A prior invoice record uses the same supplier invoice identifier."@en ;
    schema:name "Duplicate invoice identifier rule"@en ;
    :inLayer :rulesLayer .

:warranty a :EvidenceDocument ;
    schema:about :heatPumpHPDE2048 ;
    schema:description "Illustrative warranty active from installation through 2027-09-14 and covering qualifying diagnostic work."@en ;
    schema:name "Heat-pump warranty"@en ;
    schema:validFrom "2025-09-15"^^xsd:date ;
    schema:validThrough "2027-09-14"^^xsd:date ;
    :inLayer :contractsLayer .

:lineDiagnostic a :InvoiceLineItem ;
    schema:about :heatPumpHPDE2048 ;
    schema:description "Covered by the annual service contract"@en ;
    schema:isPartOf :invoiceRE20260017 ;
    schema:name "Diagnostic inspection"@en ;
    :inLayer :invoiceLayer ;
    :observedAmount 120.00 .

<https://www.linkedin.com/pulse/power-layered-knowledge-graphs-applied-real-estate-adamchic-phd-vv4df/> a schema:Article ;
    schema:author <https://www.linkedin.com/in/adamchic/#this> ;
    schema:datePublished "2026-08-02"^^xsd:date ;
    schema:name "Power of Layered Knowledge Graphs Applied to Real Estate Management: GraphRAG Re-born"@en ;
    schema:url <https://www.linkedin.com/pulse/power-layered-knowledge-graphs-applied-real-estate-adamchic-phd-vv4df/> .

:contractsLayer a :GraphLayer ;
    schema:description "Installation, warranty, and service-contract evidence."@en ;
    schema:hasPart :installationContract,
        :installationRecord,
        :serviceContract,
        :warranty ;
    schema:isPartOf :pocSection ;
    schema:name "ContractsLayer"@en .

:serviceContract a :EvidenceDocument ;
    schema:about :heatPumpHPDE2048 ;
    schema:description "Illustrative service agreement covering one diagnostic visit per contract year and imposing a EUR 450 call-out ceiling."@en ;
    schema:name "Annual heat-pump service contract"@en ;
    schema:provider :contractor ;
    :expectedAmount 450.00 ;
    :inLayer :contractsLayer .

:contractor a schema:Organization ;
    schema:description "Illustrative contractor named consistently across installation, contract, service, and invoice evidence."@en ;
    schema:name "ThermoHaus Service"@en .

:invoiceLayer a :GraphLayer ;
    schema:description "Invoices, line items, tax, totals, and supplier evidence."@en ;
    schema:hasPart :invoiceRE20260017,
        :lineDiagnostic,
        :lineFilter,
        :lineTravel,
        :priorInvoiceRE20260017 ;
    schema:isPartOf :pocSection ;
    schema:name "InvoiceLayer"@en .

:pocSection a schema:CreativeWork ;
    schema:description "A representative invoice is checked against installation data, equipment identity, warranty coverage, a service contract, contractor identity, arithmetic, tax, supporting evidence, and a call-out price ceiling."@en ;
    schema:hasPart :contractsLayer,
        :invoiceLayer,
        :legalLayer,
        :ontologyLayer,
        :rulesLayer ;
    schema:isPartOf :notes ;
    schema:name "Heat-pump invoice validation proof of concept"@en ;
    schema:position 3 ;
    schema:text "A representative invoice is checked against installation data, equipment identity, warranty coverage, a service contract, contractor identity, arithmetic, tax, supporting evidence, and a call-out price ceiling."@en .

:howto a schema:HowTo ;
    schema:description "Six-step procedure for loading, querying, validating, and inspecting the pure SPARQL proof of concept."@en ;
    schema:hasPart :step1,
        :step2,
        :step3,
        :step4,
        :step5,
        :step6 ;
    schema:isPartOf :notes ;
    schema:name "How to reproduce the Neo4j-versus-Virtuoso comparison"@en ;
    schema:step :step1,
        :step2,
        :step3,
        :step4,
        :step5,
        :step6 .

:notes a schema:AnalysisNewsArticle ;
    schema:about :neo4jArchitecture,
        :virtuosoArchitecture ;
    schema:abstract "One invoice-validation problem is modeled through the article's Neo4j property-graph design and through Virtuoso's RDF-native semantics, inference, provenance, and standards-based SPARQL query surface."@en ;
    schema:accountablePerson <https://www.linkedin.com/in/kidehen#this> ;
    schema:articleBody "The comparison holds the real-estate evidence constant while changing the graph platform. Neo4j uses Fixed Entity Architecture, labels, vector indexes, Graph Builder, and Cypher. Virtuoso uses RDF IRIs, ontology axioms, graph patterns, inference, provenance, and pure SPARQL over generated ontology instances."@en ;
    schema:author <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this> ;
    schema:dateCreated "2026-08-10"^^xsd:date ;
    schema:description "Source-grounded notes about Irina Adamchic's article, paired with an executable RDF proof of concept that compares Neo4j GraphRAG with a pure SPARQL Virtuoso/RDF showcase."@en ;
    schema:hasPart :comparisonSection,
        :faq,
        :glossary,
        :howto,
        :ontology,
        :pocSection,
        :querySection,
        :resultsSection,
        :retrievalSection,
        :sourceThesisSection ;
    schema:isBasedOn <https://www.linkedin.com/pulse/power-layered-knowledge-graphs-applied-real-estate-adamchic-phd-vv4df/> ;
    schema:name "Notes on Layered Real-Estate Knowledge Graphs: Neo4j and Virtuoso"@en ;
    prov:wasGeneratedBy <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/data-twingler#this>,
        <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this>,
        <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/rdf-infographic-skill#this>,
        <https://openai.com/codex/#this> .

:heatPumpHPDE2048 a :HeatPump ;
    schema:dateInstalled "2025-09-15"^^xsd:date ;
    schema:description "Installed heat-pump asset referenced by the contract, warranty, service record, and invoice."@en ;
    schema:name "Heat pump HP-DE-2048"@en ;
    schema:serialNumber "HP-DE-2048"@en ;
    :inLayer :ontologyLayer .

<https://virtuoso.openlinksw.com/#this> a schema:SoftwareApplication ;
    schema:description "Multi-model database and RDF quad store used by the RDF-based competing design."@en ;
    schema:name "OpenLink Virtuoso"@en ;
    schema:url <https://virtuoso.openlinksw.com/> .

:glossary a schema:DefinedTermSet ;
    schema:description "Terms used across the Neo4j and Virtuoso implementations."@en ;
    schema:hasDefinedTerm :termEvidencePath,
        :termFixedEntityArchitecture,
        :termGraphRag,
        :termInference,
        :termKgOnly,
        :termLinkedPropertyGraph,
        :termNamedGraph,
        :termOntologyLayer,
        :termProvenance,
        :termPureSparql,
        :termRdf,
        :termShacl ;
    schema:isPartOf :notes ;
    schema:name "Layered graph comparison glossary"@en .

:querySection a schema:CreativeWork ;
    schema:description "Named code resources preserve the source Cypher and provide RDF, SPARQL, and Virtuoso query recipes for reproducing the comparison."@en ;
    schema:hasPart :askArithmetic,
        :askAsset,
        :askCoveredDiagnosticViolation,
        :askDuplicate,
        :askEvidencePath,
        :askSupplier,
        :pureSparqlCoveredServicePathQuery,
        :pureSparqlInvoiceInstanceQuery,
        :pureSparqlLayerInventoryQuery,
        :pureSparqlValidationFindingsQuery,
        :sourceCypherVectorPrefilter,
        :virtuosoKgOnlyQuery ;
    schema:isPartOf :notes ;
    schema:name "Reproducible query and validation recipes"@en ;
    schema:position 6 ;
    schema:text "Named code resources preserve the source Cypher and provide RDF, SPARQL, and Virtuoso query recipes for reproducing the comparison."@en .

:neo4jArchitecture a :GraphArchitecture ;
    schema:description "Source-described architecture using Neo4j Community Edition, Fixed Entity Architecture, labeled layers, Graph Builder, vector indexes, Cypher, APOC, and Neo4j MCP."@en ;
    schema:instrument <http://dbpedia.org/resource/Neo4j> ;
    schema:isBasedOn <https://www.linkedin.com/pulse/power-layered-knowledge-graphs-applied-real-estate-adamchic-phd-vv4df/> ;
    schema:name "Neo4j Linked Property Graph architecture"@en ;
    :supportsCapability :cypherQuerying,
        :fixedEntityArchitecture,
        :neo4jVectorIndex .

:faq a schema:FAQPage ;
    schema:description "Questions covering the article, the controlled comparison, and the limits of the proof of concept."@en ;
    schema:hasPart :q1,
        :q10,
        :q11,
        :q12,
        :q13,
        :q14,
        :q2,
        :q3,
        :q4,
        :q5,
        :q6,
        :q7,
        :q8,
        :q9 ;
    schema:isPartOf :notes ;
    schema:mainEntity :q1,
        :q10,
        :q11,
        :q12,
        :q13,
        :q14,
        :q2,
        :q3,
        :q4,
        :q5,
        :q6,
        :q7,
        :q8,
        :q9 ;
    schema:name "Frequently asked questions"@en .

:virtuosoArchitecture a :GraphArchitecture ;
    schema:description "RDF-native competitor architecture using HTTP IRIs, RDF/OWL semantics, SPARQL, provenance, and inference-oriented graph patterns."@en ;
    schema:hasPart :kgOnlyMode ;
    schema:instrument <https://virtuoso.openlinksw.com/#this> ;
    schema:isBasedOn <https://www.linkedin.com/pulse/power-layered-knowledge-graphs-applied-real-estate-adamchic-phd-vv4df/> ;
    schema:name "Virtuoso RDF knowledge-graph architecture"@en ;
    :supportsCapability :provEvidence,
        :rdfHttpIriIdentity,
        :rdfInference,
        :sparqlGraphQuerying .

:invoiceRE20260017 a schema:Invoice ;
    schema:about :heatPumpHPDE2048 ;
    schema:customer :property1 ;
    schema:dateIssued "2026-07-28"^^xsd:date ;
    schema:description "Illustrative heat-pump service invoice evaluated by every proof-of-concept rule."@en ;
    schema:hasPart :lineDiagnostic,
        :lineFilter,
        :lineTravel ;
    schema:identifier "RE-2026-0017"@en ;
    schema:name "Invoice RE-2026-0017"@en ;
    schema:provider :contractor ;
    schema:tax 76.00 ;
    schema:totalPaymentDue 476.00 ;
    :inLayer :invoiceLayer ;
    :observedAmount 476.00 .

:ontologyLayer a :GraphLayer ;
    schema:description "Stable domain vocabulary and imported ontology concepts."@en ;
    schema:hasPart :akomaNtosoOntology,
        :brickOntology,
        :buildingConcept,
        :customOntologySource,
        :fiboOntology,
        :heatPumpConcept,
        :invoiceConcept,
        :legalRequirementConcept,
        :lkifCoreOntology,
        :p2pOntology,
        :realEstateCoreOntology,
        :serviceContractConcept,
        :warrantyConcept ;
    schema:isPartOf :pocSection ;
    schema:name "OntologyLayer"@en .

:rulesLayer a :GraphLayer ;
    schema:description "Deterministic validation rules and named findings."@en ;
    schema:hasPart :finding1,
        :finding2,
        :finding3,
        :finding4,
        :finding5,
        :finding6,
        :finding7,
        :finding8,
        :ruleArithmetic,
        :ruleAssetIdentity,
        :ruleCalloutCeiling,
        :ruleCoveredDiagnostic,
        :ruleDuplicateIdentifier,
        :ruleSupplierMatch,
        :ruleTaxEvidence,
        :ruleWarrantyPeriod ;
    schema:isPartOf :pocSection ;
    schema:name "RulesLayer"@en .

:ontology a owl:Ontology ;
    rdfs:label "Layered Real-Estate Graph Comparison Ontology"@en ;
    schema:description "Lightweight ontology for comparing Neo4j and Virtuoso implementations and for executing the heat-pump invoice validation proof of concept."@en ;
    schema:identifier <https://www.linkedin.com/pulse/power-layered-knowledge-graphs-applied-real-estate-adamchic-phd-vv4df/> ;
    schema:name "Layered Real-Estate Graph Comparison Ontology"@en ;
    rdfs:comment "Defines architecture, layer, retrieval, rule, evidence, and validation concepts used by the proof of concept."@en .

